include io32.inc
.data
num dword 100
sum qword ?
.code
start:
mov eax,num
add eax,1
imul num
shr edx,1
rcr eax,1
mov dword ptr sum,eax
mov dword ptr sum+4,edx
mov eax, dword ptr sum
call dispuid
exit 0
end start
為了計算(1+100)*100/2中的除以二,書上給出了移位的方式,由於之前那部分看得不仔細,結果就看不懂了,特此寫下部落格引以為戒,眾多周知向右移移位相當於除以二,而彙編規定被除數字數應為除數的2倍,因為這個是32位彙編因此64位資料分別存放於edx(高32位)和eax(低32位),想要它們同時向右移1位,**中用了shr和rcr,shr使得edx在移位的同時最高位補0,最低位進cf,而rcr則是帶進製迴圈,最低位進cf,cf進最高位。也就是說高32位的最低位剛好補在低32位的最高位上,因此實現了總體右移。
java實現累加求和,計算從1加到100的結果
用三種迴圈方式實現,for while dowhile package com.loop.test 累加求和,計算1 2 3 100 用for實現 public class addsumfor system.out.println for迴圈 1 2 3 100 sum 結果 累加求和,計算1 2 ...
組合語言編寫程式從1加到100要求使用迴圈結構。
彙編思路 ax用於存放每次累加的結果 0 99 98 0 首先,data段中定義sum用來存放結果和,stack段定義乙個200db型別空間,用來存放資料。code段,ax清0,cx賦值100次,迴圈cx次,以次與ax相加,直到cx自減為零結束,將ax的結果賦值給sum,呼叫4ch號指令,結束程式返...
C51編寫選單的示例程式
include include define size of keybd menu 20 選單長度 uchar keyfuncindex 0 uchar keyfuncindexnew 0 void keyfuncptr 按鍵功能指標 typedef struct kbdtabstruct kbdt...