为什么要把ax的值设置为0呢?异或斧头,斧头

问题描述 投票:0回答:1

美好的一天!我只是想知道为什么要把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

这是什么原因?

assembly x86 dosbox
1个回答
0
投票

AH为AX(16位)的高8位

异或斧头,斧头

相当于

移动啊,0 移动,0

如果省略 xor,则不会将 al 设置为 0

DB 行定义静态数据。 0D、0A 是换行、回车(移动到下一行组合),后面跟着一条消息,后面跟着另一个 CL/CR 和“$”,这可能看起来像一个提示。

INT 21 线路调用系统服务。 9 是打印字符串,AC 是终止程序。

© www.soinside.com 2019 - 2024. All rights reserved.