第五章定址法.docVIP

  • 1
  • 0
  • 约3.81千字
  • 约 6页
  • 2017-03-04 发布于天津
  • 举报
第五章定址法

第五章 定址法 所有高階語言都有變數與陣列,可以很方便的存取資料,組合語言為了強調執行效率,必須安排所有資料於一維的連續記憶體、暫存器、或立即值,然後再使用適當的定址法存取所需的資料。本章即要介紹這些定址法。其次,介紹定址法之前,必須先說明組合語言的指令格式,組合語言的指令格式如下: 指令 目的運算元,來源運算元 隱含定址法 沒有目的與來源運算元的稱為隱含定址法。例如, CLC AAA 以上指令雖然沒有指定目的與來源運算元,但其運算目的卻都以隱含指定,此稱為隱含定址法。 立即定址法 運算元是一常數(或稱立即值),稱為立即定址法(immediate addressing )。例如, MOV AL,23 INT 20 中的23與20均為常數。 暫存器定址法 運算元是暫存器,稱為暫存器定址法(register addressing )。例如, MOV AX,BX INC BX ;BX=BX+1 PUSH AX POP AX 【自我練習】 1、寫出以下程式執行結果。 MOV AH,2 MOV AL,AB AX=_______ MOV BX,AX BX=________ INC BX BX=________ 直接定址法 運算元是一記憶體的位址,稱為直接定址法(direct addressing)。例如, -d300 -00 01 02 03 ;位址300填入00,301填入01… MOV AL,[301] AL= 01 MOV DL,11 MOV [500],DL MOV DL,22 MOV[501],DL -d500 -11 22 其次,於Masm可以使用標記代替記憶體位址,所以 aa db 34h ;h代表十六進位 MOVE AL,aa 則AL=34 。 【自我練習】 2、寫出以下程式執行結果。 -d300 -00 01 02 03 04 05 MOV BX,300 BX=______ MOV BL,[300] BL=______ MOV BX,[300] BH=_______,BL=______,BX=_______ MOV AX,1234 MOV [300],AX 位址300的內容=______,位址301的內容=______。 3、請使用直接定址法,將位址300的資料複製至400。 暫存器間接定址法 暫存器間接定址法(register indirect addressing )是將暫存器的值當作記憶體之有效位址(EA),可用的暫存器包括了BX、DI、SI及BP等四個,其中BX、DI、SI預設節區暫存器是DS,而暫存器BP的節區暫存器固定為SS。例如, -d400 -00 01 02 03 MOV BX,400 MOV AL,[BX] AL= 00 但是, MOV AX,[CX] 卻是錯誤的,因為AX、CX、DX都不能當暫存器間接定址法的來源暫存器。 【自我練習】 4、寫出以下程式執行結果。 -d300 -00 01 02 03 04 05 MOV BX,300 MOV AX,BX AX=______ MOV AX,[BX] AX=______ 基底相對定址法 基底相對定址法(base relative addressing),又稱暫存器相對定址法 (register relative addressing)。以BX或BP為基底,再加上一個偏移量,當作位址,並取此位址的資料。例如, -d400 -00 01 02 03 MOV BX,400 MOV AL,[BX][02] AL= 02 -d300 -00 01 02 03 MOV BP,300 MOV AL,30 MOV [BP][01],AL -d300 00、30、02、03 (本例假設SS與DS的值相同) 其次,以BX為基底時,配合DS,主要是存取資料區段;以BP為基底時,應配合SS,主要是存取堆疊區段。 【自我練習】 5、寫出以下程式執行結果。 -d300 -00 01 02 03 04 05 MOV BX,300 MOV AX,[BX+2] AX=______ MOV AX,[BX][2] AX=______ MOV AX,[BX]+2 AX=_______ 6、請使用基底相對定址法,將位址301的資料複製至401。 直接索引定址法 以一個固定值,加上SI或DI為位址,並存取其資料,稱為直接索

文档评论(0)

1亿VIP精品文档

相关文档