[020][汇编语言]Debug 与 MASM 对指令[idata]的不同处理

将内存2000:0 2000:1 2000:2 2000:3内存单元中的数据送入al bl cl dl 中

  • 在Debug中编程,默认输入的是 十六进制数 2000H
mov ax,2000
mov ds,ax
mov al,[0]
mov bl,[1]
mov cl,[2]
mov dl,[3]
  • 汇编源程序实现,要写清楚进制,十六进制后面加上 H 符号
assume cs:code
code segment
    mov ax,2000H
    mov ds,ax
    mov al,[0]
    mov bl,[1]
    mov cl,[2]
    mov dl,[3]

    mov ax,4c00H
    int 21H

code ends
end

U命令展示汇编指令

Debug 中对[idata]指令.png
masm对 mov al,[idata].png
  • masm 会把 [idata] 理解成 idata
  • masm 会把 mov al,[0] 理解成 mov al,0,即 (al) = 0

汇编源程序 .asm文件中以下指令的含义

  • mov al,[0] ,含义 (al)=0
  • mov al,ds:[0] ,含义 (al)=((ds)*16+0)
  • mov al,[bx] ,含义 (al)=((ds)*16+(bx))
  • mov al,ds:[bx] ,含义 mov al,[bx]

将内存单元 2000:0 数据送入 al寄存器 在 汇编源代码.asm 里面可以这么写

  • 方法一,将偏移地址放入寄存器bx
mov ax,2000H
mov ds,ax
mov bx,0
mov al,[bx]
  • 方法二,把 段寄存器ds 写在前面,显式给出段地址
mov ax,2000H
mov ds,ax
mov al,ds:[0]

推荐阅读更多精彩内容