assembly 将数据从一个位置复制到另一个位置时,使用十六进制值0x78

u4vypkhs  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(175)

为什么我们在下面的指令mov bx,0x78中使用十六进制值0x 78。下面给出了一个非常小的代码:

cli
xor ax,ax
mov ss,ax
mov sp,0x7c00
push ss
pop es
mov bx,0x78  (why we are using 
          hex value 0x78 here)
lds si,ss:bx
push ds
push si
push ss
push bx
mov di,0x7c2b
mov cx,0xb
cld

更多代码....
很抱歉给您带来不便,我还有一个问题,如下所述:
我正在处理一个非常旧的msdos1.25源代码,我发现了一个笨拙的指令,其中“$”符号的使用如下所示。什么是mov sp,$0x7c00中的$符号?
我想知道下面两个指令有什么区别:

1. mov sp,$0x7c00
2. mov sp,0x7c00
umuewwlo

umuewwlo1#

mov bx,0x78指令在BX寄存器中加载一个偏移量地址。因为相关的段寄存器(在SS的情况下)为零,所以我们要寻址的数据在中断向量表中。它是Int 1E磁盘初始化参数表。
lds si,ss:bx(最好写为lds si, [ss:bx])将SS:BX中得偏移字加载到SI寄存器,将SS:BX+2中得段字加载到DS寄存器.
然后,进一步的代码将把11字节的表复制到引导加载程序内的缓冲区。
我想知道下面两个指令有什么区别:

1. mov sp,$0x7c00
2. mov sp,0x7c00

我从来没有见过$字符这样使用。我的猜测是,可能根本没有区别。

相关问题