用16位指令编制程序,处理32位的加减乘除算术四则运算题。
本文计算(3*X+Y-Z)/5的值
值分别为:
x dw 7;大家自己定义一下数据,最好不要雷同哦!!!
y dw -3
z dw 1
data segment
x dw 7;自己定义数据,最好不要雷同!!!
y dw -3
z dw 1
v dd ?
data ends;定义数据段,其中X,Y,Z为一个字节,V为32位结果双字
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,3
imul x;IMUL结果保存在AX和DX中
mov cx,ax
mov bx,dx;转移到CX和DX中
mov ax,y
cwd;将Y扩展为32位,以下若干行相同
add cx,ax
adc bx,dx
mov ax,z
cwd
sub cx,ax
sbb bx,dx
mov ax,cx
mov dx,bx
mov cx,5
idiv cx
lea bx,v;取V的地址
mov [bx],dx
mov [bx+2],ax;将结果保存在[bx]到[bx+4]的内存位置32位
mov ah,4ch
int 21h
code ends
end start