欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编程序:双字运算

程序员文章站 2024-02-02 14:59:28
...

【任务】编程计算: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中观察机器指令,注意取数据的地址是否正确。