汇编语言 将两个2字节无符号数放在存储单元A,B的起始缓存器中,求其和

汇编语言 将两个2字节无符号数放在存储单元A,B的起始缓存器中,求其和,结果放在A的起始缓存器并在屏幕上显示。相加若有进位不存入存储单元。

code  segment
      assume cs:code
      org 100h
start:
      push cs
      pop ds
      mov ax,a
      mov bx,b
      add ax,bx
      mov a,ax
      call dispax
      mov ah,4ch
      int 21h
a     dw 32767
b     dw 32769

dispax      proc near
      ; 以10进制数形式显示无符号字的值,要显示的值事先存 AX 中
      push bx
      push cx                 ;保存bx、cx、dx、si
      push dx
      push si
      mov byte ptr nz,0       ; 状态,看是否已输出过非 0
      push ax
      lea si,divarr
      mov cx,5
disp1:
      pop ax
      mov dx,0
      mov bx,[si]
      div bx
      push dx
      cmp al,0
      jne disp2               ; 当 al不为0时输出
      cmp byte ptr nz,1       ; 当al 为0时,再比较nz 是否为 1
      je disp2                ; 等于1 表示前面已输出过非 0 应将 0 输出
      cmp cx,1                ; 当最后一位仍 为0 时 输出 0 而非空格
      je disp2
      mov dl,20h
      jmp disp3
disp2:
      add al,30h
      mov dl,al
      mov byte ptr nz,1
disp3:
      mov ah,2
      int 21h
      inc si
      inc si
      loop disp1
      pop dx
      pop si                  ; 恢复bx、cx、dx、si
      pop dx
      pop cx
      pop bx
      ret
divarr   dw 10000,1000,100,10,1
nz    db 0
dispax      endp

code  ends
      end start

温馨提示:答案为网友推荐,仅供参考
相似回答