【任务】编程计算:W=X+Y+36-Z
说明:X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。
data segment
x dd …
y dd …
z dd …
w dd …
data ends
【参考解答】
assume cs:code,ds:data
data segment
x dd 12345678H
y dd 0FB1413H
z dd 3762B2BH
w dd ?
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,x ;ax中存放和的低16位
add ax,y
mov bx,x+2 ;bx中存放和的高16位
adc bx,y+2
add ax,36
adc bx,0
sub ax,z
sbb bx,z+2
mov w,ax ;存放结果
mov w+2,bx
mov ax, 4C00H
int 21H
code ends
end start
注意:本程序在编译时,会出现一堆警告。(1)想想为什么?(2)可以忽略这些警告继续连接,得到可执行程序。在Debug中观察机器指令,注意取数据的地址是否正确。