x86为什么我在移动变量时总是在al寄存器中获取CD

标题说明问题。但是基本上每次我用MOV指令用一个变量来注册寄存器显示CD。但是当我使用实际数字时,寄存器会显示数字吗?

mov ax, @data 是否意味着将数据段内存地址移动到 ax 寄存器,并且它是否必须专门为 ax 寄存器。或者,如果我想使用 bx 寄存器中的变量,我可以做一些类似 move mov bx, @data 的事情。请回答

为什么我必须做 mov ds, ax ds 做什么为什么我很困惑有人帮助我。

回答

因为您正在使用该.model small指令,所以汇编程序会创建一个 .EXE 类型的程序。您需要更好地了解实模式分段寻址才能从 .EXE 工作。

幸运的是,还有另一种更简单的程序格式。.COM 类型的程序开始时所有的段寄存器都相等。CS= DS= ES= SS。您可以仅从偏移轻松工作。这是您学习汇编的最佳选择。

例子:

ORG 256          ;              This asks for a .COM program

mov  bl, var1    ;              Very first instruction in the program
mov  ax, var2

mov  ax, 4C00h   ; DOS.TerminateProgram
int  21h

var1  db 4       ; Byte         Place all the data below the code!
var2  dw 1000    ; Word 

没有更多了。


以上是x86为什么我在移动变量时总是在al寄存器中获取CD的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>