【问题标题】:add 2 numbers in assembly [closed]在程序集中添加 2 个数字 [关闭]
【发布时间】:2013-01-11 09:34:15
【问题描述】:

我想添加两个数字,但有一个问题我找不到,请帮助我!

谢谢

.model small
.stack
.data

        data1 dw 6
        data2 dw 8
.code

main:

mov ax,@data
mov ds,ax
mov ax, data1
add ax, data2
add dx,ax
sub dx,'0'
mov ah,09h
int 21h
mov ah,1
int 21h

end main

【问题讨论】:

  • 你在看什么?你希望看到什么?

标签: assembly i386


【解决方案1】:

dx 未初始化,在add dx, ax 处包含垃圾。

【讨论】:

    【解决方案2】:

    mov ah, 9
    int 21h
    

    这将打印一个由dx 指向的以$ 结尾的字符串。目前我们不太清楚 dx 中的内容,但它极不可能指向代表您的号码的以 $ 结尾的字符串!

    你在把这两个数字相加方面做得很好。 ax 应该保持 14 或 0Eh。这是在al 中打印两位数字的“技巧”...

    ; split the number in al
    ; "tens" place in ah, "ones" place in al
    aam
    ; convert both digits from a "number"
    ; to ascii characters representing the numbers
    add ax, 3030h
    ; we want to print leftmost character first
    ; so swap 'em
    xchg al, ah
    ; print al
    int 29h
    ; swap 'em back
    xchg al, ah
    ; print al
    int 29h
    ; please exit cleanly!
    

    这是“从记忆中”变得非常不稳定,所以可能是错误的。我怀疑这是否是您“应该”这样做的方式 int 29h 被记录为“供内部使用”,但在我上次执行 dos 时曾经工作过。祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多