Debugging 在MS调试中输出Az Za

Debugging 在MS调试中输出Az Za,debugging,assembly,dos,x86-16,Debugging,Assembly,Dos,X86 16,我目前正努力在ms debug中输出AzByCx,因为我对它不太了解。 这里包括我的老师寄给我们的 我可以很容易地输出A-Z,但AzBxCy不能,因为网上没有太多详细的教程,所以我来这里询问。Microsoft DEBUG.EXE确实可以用来编写英特尔语法汇编中的简单程序,请参见此。用db“AzByCx$”替换字符串定义db“Hello world$”,就完成了 然而,这绝对不是学习汇编语言的好方法。 找一个更好的老师 -e 200 "Az" -a 1BD8:0100 mo

我目前正努力在ms debug中输出AzByCx,因为我对它不太了解。 这里包括我的老师寄给我们的


我可以很容易地输出A-Z,但AzBxCy不能,因为网上没有太多详细的教程,所以我来这里询问。

Microsoft DEBUG.EXE确实可以用来编写英特尔语法汇编中的简单程序,请参见此。用
db“AzByCx$”
替换字符串定义
db“Hello world$”
,就完成了

然而,这绝对不是学习汇编语言的好方法。 找一个更好的老师

-e 200 "Az"
-a
1BD8:0100 mov bx, word [200]
1BD8:0104 mov cx, 3
1BD8:0107 mov ah, 2
1BD8:0109 mov dl, bl
1BD8:010B int 21
1BD8:010D mov dl, bh
1BD8:010F int 21
1BD8:0111 add bx, FF01
1BD8:0115 loop 109
1BD8:0117 mov dl, 0D
1BD8:0119 int 21
1BD8:011B mov dl, 0A
1BD8:011D int 21
1BD8:011F mov ax, 4C00
1BD8:0122 int 21
1BD8:0124
-g
AzByCx

这有什么用

  • 将ds:200h处的单词初始化为字符串“Az”(低位字节为“A”,高位字节为“z”)

  • 使用
    命令汇编以下程序:

  • 从内存加载到寄存器
    bx
    (初始化寄存器而不必查找数字ASCII码点)

  • cx
    设置为三次迭代的循环计数器

  • 为中断21h服务02h设置寄存器
    ah
    (在
    dl
    中显示字符)

  • 显示从
    bl
    读取的字符(bx的低位字节)

  • 显示来自
    bh
    的字符(bx的高位字节)

  • bl
    中添加1,在
    bh
    中添加-1(在两个补码中导致0FFh),这会增加
    bl
    中的码点,并减少
    bh

  • 循环返回以显示后续字母

  • 显示换行符(代码点13和10,或0Dh 0Ah)以使输出更易于读取

  • 终止程序

  • 使用
    G
    命令运行程序


16位“累加器”寄存器是AX,而不是AC,除非DEBUG.EXE是一个比我想象的更糟糕的汇编程序。@Peter Cordes:
AX
确实是累加器寄存器。调试使用标志转储中的
AC
指示辅助进位设置,而
NA
指示清除。也许这就是我们搞混的原因。