汇编程序:双字运算

【任务】编程计算:W=X+Y+36-Z
说明:X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。

data segmentx dd …y dd …z dd …w dd …
data ends

【参考解答】

assume cs:code,ds:datadata segmentx dd 12345678Hy dd 0FB1413Hz dd 3762B2BHw dd ?
data endscode segmentstart:mov ax,datamov ds,axmov ax,x      ;ax中存放和的低16位add ax,ymov bx,x+2    ;bx中存放和的高16位adc bx,y+2add ax,36adc bx,0sub ax,zsbb bx,z+2mov w,ax     ;存放结果mov w+2,bxmov ax, 4C00Hint 21H
code endsend start

注意:本程序在编译时,会出现一堆警告。(1)想想为什么?(2)可以忽略这些警告继续连接,得到可执行程序。在Debug中观察机器指令,注意取数据的地址是否正确。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部