匯編語言:第5章 BX和LOOP指令_第1頁
匯編語言:第5章 BX和LOOP指令_第2頁
匯編語言:第5章 BX和LOOP指令_第3頁
匯編語言:第5章 BX和LOOP指令_第4頁
匯編語言:第5章 BX和LOOP指令_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第5章[BX]和Loop指令Loop指令的用法[BX]定位內(nèi)存單元的用法Loop指令和[BX]的聯(lián)合應(yīng)用段前綴的使用幾個約定[BX]:指偏移地址為(BX)的內(nèi)存單元。例:MOVAX,[BX]MOVAL,[2000H]LOOP循環(huán)指令():指內(nèi)容。例:若AX=1234H則(AX)=1234H,(AL)=34H(20000H)用idata表示常量(立即數(shù))例:movax,[idata]movax,[0] movax,idatamovax,1234h

例:用()描述下列指令的功能MOVAX,[2](AX)=(DS:2)MOV[2],AX

(DS:2)=(AX)ADDAX,2

(AX)=(AX)+2ADDAX,BX

(AX)=(AX)+(BX)ADDAX,[2]

(AX)=(AX)+(DS:2)PUSHAX

(SP)=(SP)-2(SS:SP)=(AX)POPAX(AX)=(SS:SP)(SP)=(SP)+2一、[BX]EA:偏移地址;SA:段地址;PA:物理地址;例1:

MOVAX,[BX]EA=(BX)SA=(DS)PA=((DS):(BX))5.2

我們常用[BX]來提供內(nèi)存單元的偏移地址,通過修改BX的值,可由DS:[BX]來尋址不同地址的內(nèi)存單元。程序和內(nèi)存中的情況如下圖,寫出程序執(zhí)行后,21000H—21007H單元中的內(nèi)容。Mov ax,2000hMov ds,axMov bx,1000hMov ax,[bx]Inc bxInc bxMov [bx],axInc bxInc bxMov [bx],axInc bxMov [bx],alInc bxMov [bx],al內(nèi)存情況BE21000H0021001H21002H21003H21004H21005H21006H21007HAx=2000hDs=2000hBx=1000hAx=00BEHBX=1001HBX=1002H(21002H)=00BEHBE00BX=1003HBX=1004H(21004H)=00BEHBx=1005H(21005H)=BEHBE00BEBx=1006H(21006H)=BEHBE二、循環(huán)控制指令LOOP

用CX作計數(shù)器控制程序的循環(huán)。格式:LOOP標號;CX≠0循環(huán)功能:當CX≠0時,(CX)=(CX)-1;轉(zhuǎn)移到標號處循環(huán)執(zhí)行。

CX和LOOP指令配合實現(xiàn)循環(huán)功能的三個要點:1、在CX中存放循環(huán)次數(shù)2、LOOP指令中的標號所標識地址要在前面3、要循環(huán)執(zhí)行的程序段寫在標號和LOOP指令之間。利用LOOP指令編程計算212ASSUME CS:CODECODE SEGMENT MOVAX,2 MOVCX,11S: ADDAX,AX LOOPS MOVAX,4C00H INT 21HCODE ENDSEND例2:編程,用加法計算123×236,結(jié)果存在AX中。三、在DEBUG中跟蹤用LOOP指令實現(xiàn)的循環(huán)程序ASSUME CS:CODECODE SEGMENT MOVAX,0FFFFH MOVDS,AX MOVBX,6 MOVAL,[BX] MOVAH,0 MOVDX,0 MOVCX,3S: ADDDX,AX LOOPS MOVAX,4C00H INT 21HCODE ENDSEND在匯編源程序中,數(shù)據(jù)不能以字母開頭。ASSUME CS:CODECODE SEGMENT MOVAX,0FFFFH MOVDS,AX MOVBX,6 MOVAL,[BX] MOVAH,0 MOVDX,0

MOVCX,123S: ADDDX,AX LOOPS MOVAX,4C00H INT 21HCODE ENDSEND使用P命令可以將循環(huán)指令一次執(zhí)行結(jié)束。也可用“GXXXX”命令來執(zhí)行到循環(huán)結(jié)束。四、DEBUG和匯編編譯器MASM對指令的不同處理在DEBUG中我們可以使用下面指令來讀寫內(nèi)存:MOV AX,[0]MOV AL,[2]MOV BX,[1234H]但在匯編程序中只能使用[寄存器]來尋址內(nèi)存:例:MOV AX,[BX]在匯編編譯器處理中,MOVAX,[1234H]=MOV AX,1234H五、LOOP和[BX]的聯(lián)合使用 計算:FFFF:0—FFFF:B單元中的數(shù)據(jù)的和,結(jié)果保存在DX中XXFFFF0HXXFFFF1HXXFFFF2HXXFFFF3HXXFFFF4HXXFFFF5HXXFFFF6HXXFFFF7HXXFFFF8HXXFFFF9HXXFFFFAHXXFFFFBH運算結(jié)果是否會超出DX能否將數(shù)據(jù)直接加到DX中能否將數(shù)據(jù)直接加到DL中辦法:將內(nèi)存單元中的8位數(shù)據(jù)賦到一個16位寄存器AX中,再將AX加到DX上。 movax,0ffffh movds,ax movdx,0

moval,ds:[0] movah,0 adddx,ax moval,ds:[1] movah,0 adddx,ax moval,ds:[2] movah,0 adddx,ax . . moval,ds:[0bh] movah,0 adddx,axAssumecs:codeCode segment movax,0ffffh movds,ax movdx,0六、段前綴

在訪問內(nèi)存單元的指令中,用于顯式地指明內(nèi)存單元的段地址的“段寄存器:”,在匯編語言中稱為段前綴。例:

MOV AX,DS:[BX]MOV AX,CS:[BX]MOV AX,ES:[BX]MOV AX,SS:[0]MOV AL,CS:[1234H]注意:當指令中給出段前綴時,該數(shù)據(jù)的段地址由指定的段寄存器提供。例:MOVAX,CS:[BX]PA=((CS):(BX))七、一段安全的空間 匯編語言程序直接面向機器,如果我們要向內(nèi)存空間寫入數(shù)據(jù)時,要保證所寫入的內(nèi)存中沒有重要的數(shù)據(jù),否則會影響系統(tǒng)的正常運行,在一般的PC機中都不使用0:200—0:300這段內(nèi)存空間,所以我們可以放心使用這段安全的空間。八、段前綴的使用 編程將內(nèi)存FFFF:0—FFFF:B單元中的數(shù)據(jù)拷貝到0:200—0:20B單元中。FFFF0HFFFF1HFFFF2HFFFF3HFFFF4HFFFF5HFFFF6HFFFF7HFFFF8HFFFF9HFFFFAHFFFFBH00200H00201H00202H00203H00204H00205H00206H00207H00208H00209H0020AH0020BH movbx,0 movcx,12S: movax,0ffffh movds,ax movdl,[bx]

movax,0020h mov ds,ax mov[bx],dl inc bx loops movax,4c00h int 21h movbx,0 movcx,12

movax,0ffffh movds,ax movax,0020h moves,axS: movdl,[bx] moves:[bx],dl inc bx loops movax,4c00h int 21h 題目:按下面的程序框架編程,使用循環(huán)語句計算1+2+3+…+100,并把結(jié)果保存在物理地址12345H指向的字存儲單元中。CODESSEGMENTASSUMECS:CODESSTART: ;此處輸入功能實現(xiàn)代碼MOVAH,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論