美好的一天!我只是想知道为什么要把ax的值设置为0? 有人可以向我解释一下这里每一行代码的含义吗? 我知道第一行是跳转到内存地址126,如果我错了,请纠正我。 第二行定义字节地址102到0d,0a,'这是我的第一个DEBUG程序!',0d是返回函数,0a是内联函数? 我不知道“$”是什么 其余的我不明白。如果我错了,再次请纠正我,我真的很想学习。
xxxx:0100 jmp 126
xxxx:0102 db 0d,0a,'This is my first DEBUG program!'
xxxx:0123 db 0d,0a,'$'
xxxx:0126 xor ax,ax
xxxx:0128 mov ah,9
xxxx:012A mov dx,102
xxxx:012D int 21
xxxx:012F mov ax,4c
xxxx:0132 int 21
xxxx:0134
我尝试通过删除行 xor ax, ax 来不将 ax 的值设置为 0,但它不会执行代码。
xxxx:0100 jmp 126
xxxx:0102 db 0d,0a,'This is my first DEBUG program!'
xxxx:0123 db 0d,0a,'$'
xxxx:0128 mov ah,9
xxxx:012A mov dx,102
xxxx:012D int 21
xxxx:012F mov ax,4c
xxxx:0132 int 21
xxxx:0134
这是什么原因?
AH为AX(16位)的高8位
异或斧头,斧头
相当于
移动啊,0 移动,0
如果省略 xor,则不会将 al 设置为 0
DB 行定义静态数据。 0D、0A 是换行、回车(移动到下一行组合),后面跟着一条消息,后面跟着另一个 CL/CR 和“$”,这可能看起来像一个提示。
INT 21 线路调用系统服务。 9 是打印字符串,AC 是终止程序。