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
没有更多了。