彙編累加到100示例程式移位的理解

2021-06-25 22:32:15 字數 633 閱讀 9924

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...