首页 > 解决方案 > 如何检索两个大数的总和?

问题描述

我正在尝试添加两个数字(假设第一个数字 = 200,第二个 = 100)。当我在 AL 中添加它们时,我得到 2C 十六进制而不是 300。是因为有溢出吗?如果这是它的原因,我如何从中获得输出?我从其他几篇文章中读到,但大多数都处理较小的数字或使用 xor,我完全不明白为什么要使用它。答案表示赞赏。

这是我的代码:

.model small          
.stack 100
.data

    No1 DB 200          ;First number 
    No2 DB 100

    Sum DW ?   

.code  
START: 

    MOV ax, @data
    MOV ds, ax

    MOV ax, 0
    MOV al, No1
    ADD al, No2 

end start

标签: assemblyx86-16emu8086

解决方案


这是一个有效的解决方案emu8086

.MODEL small          
.STACK 100

.DATA
    No1 DB 200
    No2 DB 100
    Sum DW ?   

.CODE  
   start PROC
      MOV ax, @data
      MOV ds, ax

      XOR ah, ah
      MOV al, No1 
      XOR bh, bh
      MOV bl, No2
      ADD ax, bx

      MOV Sum, ax
   start ENDP

推荐阅读