1. 程式人生 > >Debug和彙編編譯器masm對指令的不同處理

Debug和彙編編譯器masm對指令的不同處理

我們在Debug和源程式中寫入同樣形式的指令 :

"mov al,[0]","mov bl,[1]","mov cl,[2]","mov dl,[3]",但Debug和編譯器對這些指令中的"[idata]"卻有不同的解釋。Debug將它解釋為"[idata]"是一個記憶體單元,"idata"是記憶體單元的偏移地址;而編譯器將"[idata]"解釋為"idata"。

我們在源程式中可以將偏移地址放入bx暫存器中,用[bx]的方式來訪問記憶體單元。例如我們可以這樣訪問2000:0單元:

mov ax,2000h
mov ds,ax
mov bx,0
mov al,[bx]

也可以這樣訪問:在“[]”的前面顯式地給出段地址所在的段暫存器。

mov ax,2000h
mov ds,ax
mov al,ds:[0]