在程序集中加入操作
问题描述:
自从我停止使用某些代码语言以来,已经有一段时间了,并且自从前几天在学校开始我进行汇编,我想开始理解某些代码行的背后的一些逻辑。
其实,我试过的是两个变量之间简单的ADD操作。我使用emu8086来模拟我的代码,然后我会告诉你为什么我无法理解它。在程序集中加入操作
的代码如下:
stack segment
dw 128 dup(0)
ends
data segment
x DB 3
y DB 5
r DB 0
ends
code segment
mov ah,x
mov al,y
add ah,al
mov r,ah
ends
现在,我只是初始化三个变量,其中两个8位,我想第一个添加到第二。
问题是:当我模拟代码,我去看看会发生什么一步一步,第一步应该是AH=03
,但它似乎输出CDH(这不是我的X VAR),我无法得到原因。 AL
同样的事情。
我的意思是,为什么我会在我的AH
和AL
寄存器中写入其他东西而不是x和y var?
答
所有的mov
指令都可以解决由DS
段寄存器引用的内存中的变量。你需要预先设置它!只需添加以下几行:
code segment
mov ax, @data <- Add this
mov ds, ax <- Add this
mov ah, x
mov al, y
add ah, al
mov r, ah
ends
+0
是的,现在它工作。非常感谢! –
您可能忘了设置'DS'来指向您的数据段。 – Jester
对不起,但是,我该怎么做? –