三、直接尋址
在直接尋址方式中,操作數(shù)的偏移地址(EA)是指令的一部分,它與操作碼一起存放在代碼段中,而操作數(shù)可以存放在數(shù)據(jù)段,也可以存放在其他段。操作數(shù)的物理地址(PA)由其所在段的段寄存器內(nèi)容左移4位與指令中給出的偏移地址(EA)相加形成。
匯編格式:含有變量的地址表達式或段寄存器名:[EA]
功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址EA。
PA=(段寄存器)×10H+EA
直接尋址的尋址方式如圖所示:
這種尋址方式和前兩種的的區(qū)別就是:指令執(zhí)行時需要再存取存儲器,也就是存取操作數(shù)時需要訪問內(nèi)存,而前兩種尋址方式存取操作數(shù)時不需要訪問內(nèi)存。
例:2003.4三級PC考題
若有BUF DW 1、2、3、4,則可將數(shù)據(jù)02H取到AL寄存器中的指令是
。ˋ)MOV AL, BYTE PTR[BUF+1]
。˙)MOV AL, BYTE PTR[BUF+2]
。–)MOV AL, BYTE PTR [BUF+3]
。―)MOV AL,BUF[2]
答案:B
分析:根據(jù)數(shù)據(jù)定義偽指令BUF DW 1、2、3、4畫出內(nèi)存分配示意圖,在存儲單元相應(yīng)位置標(biāo)出變量名和EA。答案D中目的操作數(shù)AL的類型為字節(jié),而源操作數(shù)BUF[2]前無BYTEPTR,則BUF[2]類型為字,兩個操作數(shù)的類型不一致,指令是錯誤的,因此答案D可排除。變量BUF的EA為0,數(shù)據(jù)02H在內(nèi)存中的EA為2。答案ABC中指令的源操作數(shù)都是直接尋址,而只有[BUF+2]的EA為2,所以選B