彙編簡單問題你會嗎

2022-06-23 14:25:03 字數 1065 閱讀 3011

1樓:鯤鵬展翅

設x、y、z為有符號字變數,編寫程式計算表示式

r=((x*y+5)+4*x)/z。

程式如下:

data segment

x dw ?

y dw ?

z dw ?

r dw 2 dup(0)

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov ax,x

imul y ;計算x*y,積放在dx和ax中,其中dx存高位,ax中低位

add ax,5 ;將5加到x*y積的低位ax中

adc dx,0 ;將x*y+5的低位進位制加到高位dx中,現在dx與ax中存放x*y+5的和

mov cx,dx ;將和的高位由dx儲存到cx中

mov bx,ax;將和的低位由ax儲存到bx中,即bx和cx儲存x*y+5的和

mov ax,x

mov si,4 ;要求4*x

imul si ;完成4*x,積存入dx和ax中

add ax,bx;完成(x*y+5)+4*x低位相加,和存入ax

adc dx,cx ;完成(x*y+5)+4*x高位相加,和存入dx

idiv z;完成((x*y+5)+4*x)/z ,商存入ax,餘數存入dx中

mov r,ax;商由ax存入r單元中

mov r+2,dx ;餘數由dx存入r+2單元中,r+2表示r的下一個字單元

mov ah,4ch;結束程式,返回系統

int 21h

code ends

end start

2樓:百度網友

r是一處已分配的記憶體空間, r+2意思是r所在地址偏移為2位元組的地方,

加入r地址為0x1000, mov r+2,dx就是把dx值存入基地址0x1002內

3樓:匿名使用者

樓主打?的地方太多了,如果真的是這麼多地方有疑問,建議樓主好好看看教材吧