




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、l 調(diào)用指令調(diào)用指令CALL 段內(nèi)直接調(diào)用段內(nèi)直接調(diào)用 格式格式 CALL 符號(hào)地址符號(hào)地址 ;NEAR屬性屬性 執(zhí)行執(zhí)行 (SP) (SP)- 2 (SS:SP) (下一條語(yǔ)句的(下一條語(yǔ)句的IP) (IP) 符號(hào)地址的偏址符號(hào)地址的偏址 ;轉(zhuǎn)至符號(hào)地址處取指令轉(zhuǎn)至符號(hào)地址處取指令入棧保存返回地址偏值入棧保存返回地址偏值 段間直接調(diào)用段間直接調(diào)用格式格式 CALL 符號(hào)地址符號(hào)地址 ;FAR屬性屬性執(zhí)行執(zhí)行 (SP) (SP)- 2(SS:SP) (CS) (SP) (SP)- 2(SS:SP) (IP) (IP) 符號(hào)地址的偏址符號(hào)地址的偏址(CS) 符號(hào)地址的段址符號(hào)地址的段址入棧保存返
2、回地址段值入棧保存返回地址段值入棧保存返回地址偏值入棧保存返回地址偏值轉(zhuǎn)至符號(hào)地址轉(zhuǎn)至符號(hào)地址l 返回指令返回指令RET 段間返回段間返回格式格式 RET 或或 RETF 執(zhí)行執(zhí)行 (IP) (SS:SP) (SP) (SP)+ 2 (CS) (SS:SP) (SP) (SP)+ 2從堆棧取返回地址偏值從堆棧取返回地址偏值從堆棧取返回地址偏值從堆棧取返回地址偏值從堆棧取返回地址段值從堆棧取返回地址段值 段內(nèi)返回段內(nèi)返回 格式格式 RET 執(zhí)行執(zhí)行 (IP) (SS:SP) (SP) (SP)+ 2段內(nèi)和段間返回指令的匯編語(yǔ)言格式均可用段內(nèi)和段間返回指令的匯編語(yǔ)言格式均可用RET, 但機(jī)器碼不同
3、,段內(nèi)為但機(jī)器碼不同,段內(nèi)為C3H, 段間為段間為CBH, 匯編程序據(jù)過(guò)程類型確定返回類型匯編程序據(jù)過(guò)程類型確定返回類型。例例1 display PROC NEAR 、 、 C3H 、 RET ;NEAR 屬性的過(guò)程對(duì)應(yīng)段內(nèi)返回屬性的過(guò)程對(duì)應(yīng)段內(nèi)返回 display ENDP例例2 display PROC FAR 、 、 CBH 、 RET ;FAR屬性的過(guò)程對(duì)應(yīng)段間返回屬性的過(guò)程對(duì)應(yīng)段間返回 display ENDP例例 段內(nèi)直接調(diào)用段內(nèi)直接調(diào)用 code SEGMENT 、 、 CALL sub 2000:200H 、 、 、 、 sub PROC NEAR2000:300H 、 、 、
4、 RET sub ENDP code ENDS 0002A4501000:1004SS:SP 調(diào)用后調(diào)用后 (IP)=300H1000:1006SS:SP 返回后返回后 (IP)=200H0002A4501000:1006SS:SP 1000:1004SS:SP 堆棧的變化堆棧的變化例例 段間直接調(diào)用段間直接調(diào)用 code1 SEGMENT 、 、 CALL sub 2000:100H 、 、 code1 ENDS code2 SEGMENT 、 sub PROC FAR3000:200H 、 、 、 RET sub ENDP code2 ENDS 1000:1002SS:SP 調(diào)用后調(diào)用后
5、(IP)=200H (CS)=3000H1000:1006SS:SP 00010020A450 返回后返回后 (IP)=100H, (CS)=2000H1000:1002SS:SP 1000:1006SS:SP 00010020A450注意:注意: l 在調(diào)用、返回指令中,在調(diào)用、返回指令中, 利用堆棧保存、恢復(fù)返回地址。利用堆棧保存、恢復(fù)返回地址。l 對(duì)堆棧的操作應(yīng)有目的性,對(duì)堆棧的操作應(yīng)有目的性, 不亂用堆棧操作,不隨意修改堆棧內(nèi)容,不亂用堆棧操作,不隨意修改堆棧內(nèi)容, 否則易造成死機(jī)。否則易造成死機(jī)。l 中斷:中斷:CPU暫?,F(xiàn)行程序,轉(zhuǎn)而處理暫?,F(xiàn)行程序,轉(zhuǎn)而處理隨機(jī)隨機(jī)到來(lái)的事到來(lái)的
6、事件,待處理完后再回到被暫停的程序繼續(xù)執(zhí)行,這件,待處理完后再回到被暫停的程序繼續(xù)執(zhí)行,這個(gè)過(guò)程就是中斷。個(gè)過(guò)程就是中斷。中斷概念中斷概念中斷產(chǎn)生的情況下中斷產(chǎn)生的情況下CPU運(yùn)行程序的流程運(yùn)行程序的流程中斷源中斷源 能夠引發(fā)中斷的事件被稱為中斷源。能夠引發(fā)中斷的事件被稱為中斷源。外部中斷源:外部中斷源:由外部設(shè)備產(chǎn)生的中斷,由外部設(shè)備產(chǎn)生的中斷,如如輸入輸入/ /輸出請(qǐng)輸出請(qǐng)求、定時(shí)時(shí)鐘、掉電、設(shè)備故障等。求、定時(shí)時(shí)鐘、掉電、設(shè)備故障等。 內(nèi)部中斷源:內(nèi)部中斷源:由由CPUCPU內(nèi)部執(zhí)行指令過(guò)程中產(chǎn)生的中斷內(nèi)部執(zhí)行指令過(guò)程中產(chǎn)生的中斷, ,如如溢出、單步運(yùn)行、斷點(diǎn)、中斷指令溢出、單步運(yùn)行、斷
7、點(diǎn)、中斷指令I(lǐng)NT NINT N等。等。4) 中斷調(diào)用、中斷返回指令中斷調(diào)用、中斷返回指令 指令:指令:INT N / IRET 共有共有256個(gè)類型號(hào)(個(gè)類型號(hào)(0FFH, 即即 0255)如:如:類型號(hào)類型號(hào)0 處理除處理除0錯(cuò)誤的中斷子程錯(cuò)誤的中斷子程類型號(hào)類型號(hào)9H 處理鍵盤操作的中斷子程處理鍵盤操作的中斷子程類型號(hào)類型號(hào)21H 與與DOS系統(tǒng)功能相關(guān)的中斷子程系統(tǒng)功能相關(guān)的中斷子程中斷向量表:中斷向量表:存放存放 256 個(gè)中斷向量的內(nèi)存區(qū)域個(gè)中斷向量的內(nèi)存區(qū)域 4 256 = 1024 = 1K 中斷向量表地址為中斷向量表地址為 0:0 0:03FF H 即即0段前段前1K個(gè)內(nèi)存單
8、元,低端個(gè)內(nèi)存單元,低端1K內(nèi)存。內(nèi)存。 類型號(hào)為類型號(hào)為N的中斷向量存放在的中斷向量存放在4個(gè)內(nèi)存單元中個(gè)內(nèi)存單元中 ( 0 : N4 0 : N4 + 3 ) 其中:其中:( 0 : N4 0 : N4 +1 ) 存放偏移地址存放偏移地址 ( 0 : N42 0 : N4 +3 ) 存放段地址存放段地址中斷向量:中斷向量:中斷子程序的入口地址中斷子程序的入口地址, 包括包括段地址、偏移地址段地址、偏移地址類型類型FF中斷向量中斷向量類型類型0中斷向量中斷向量 、 段值段值類型類型0向量的偏值向量的偏值類型類型1向量的偏值向量的偏值 、 段值段值1020H3040H類型類型FF向量的偏值向量
9、的偏值 、 段值段值類型類型1中斷向量中斷向量類型類型N中斷向量中斷向量0 : 00000 : 00040 : N40 : 03fc中中斷斷向向量量表表0:03FF類型類型N的中斷子程序從的中斷子程序從3040:1020H開始開始 有的中斷子程序在軟、硬件有的中斷子程序在軟、硬件條件滿足時(shí)條件滿足時(shí),CPU會(huì)自會(huì)自 動(dòng)去執(zhí)行動(dòng)去執(zhí)行 例如:例如: 除除0時(shí)時(shí),CPU自動(dòng)執(zhí)行自動(dòng)執(zhí)行類型類型0的中斷子程的中斷子程 按下某鍵按下某鍵,CPU自動(dòng)執(zhí)行自動(dòng)執(zhí)行類型類型9的中斷子程的中斷子程l 中斷調(diào)用指令中斷調(diào)用指令I(lǐng)NT保保存存現(xiàn)現(xiàn)場(chǎng)場(chǎng)取中斷子程入口地址取中斷子程入口地址入棧保存入棧保存IP入棧保存
10、入棧保存CS入棧保存入棧保存PSW清清IF標(biāo)志標(biāo)志清清TF標(biāo)志標(biāo)志 格式格式 INT N ;其中其中 N=0 FFH 即即0255 執(zhí)行執(zhí)行 (SP) (SP)- 2 (SS:SP) (PSW) IF 0 TF 0 (SP) (SP)- 2 (SS:SP) (CS) (SP) (SP)- 2 (SS:SP) (IP) (IP) (0: N 4) (CS) (0: N4 + 2) l中斷返回指令中斷返回指令I(lǐng)RET 格式格式 IRET 執(zhí)行執(zhí)行 (IP) (SS:SP) (SP) (SP)+ 2 (CS) (SS:SP) (SP) (SP)+ 2 (PSW) (SS:SP) (SP) (SP)+
11、 2從堆棧取返回地址,從堆棧取返回地址,并恢復(fù)現(xiàn)場(chǎng)并恢復(fù)現(xiàn)場(chǎng) CS:IP轉(zhuǎn)至主程被中斷處取指令轉(zhuǎn)至主程被中斷處取指令執(zhí)行執(zhí)行IRET后后 SS:SP(PSW)(CS)(IP)執(zhí)行執(zhí)行IRET前前 SS:SP 、 內(nèi)內(nèi) 存存 0000:0000 、 、0:1C4 =70h FF53H 中斷向量表中斷向量表0:1C4+2=72h F000H (1K字節(jié)字節(jié)) 、 0:03FFH 、 、 、 INT 1CH 中斷調(diào)用中斷調(diào)用 1271:0102H 、 、 、 、 、 F000:FF53H 、 、 中斷子程中斷子程 、 IRET 中斷返回中斷返回 、 、 F000:FFFFH 、(PSW)=0300H
12、IF=1,TF=12000:0106SS:SP INT 1C執(zhí)行前執(zhí)行前 IF=1,TF=1 (PSW) =0300H (CS) )=1271H 2000:0100SS:SP 127100 03 0102INT 1C執(zhí)行后執(zhí)行后 (IP) =0102H (PSW)=0000HIF=0,TF=0IRET執(zhí)行后執(zhí)行后 2000:0106SS:SP (CS)=F000, (IP)=FF53、了解了解 INT指令調(diào)用中斷子程序指令調(diào)用中斷子程序 IRET指令中斷返回過(guò)程指令中斷返回過(guò)程 D:TEACHDEBUG -A ;匯編一條中斷指令匯編一條中斷指令 2F68:0100 INT 1C 2F68:01
13、02 -R ;查看執(zhí)行指令前各寄存器內(nèi)容查看執(zhí)行指令前各寄存器內(nèi)容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0F68 ES=0F68 SS=0F68 CS=2F68 IP=2100 NV UP EI PL NZ NA PO NC 0F68:0100 CD1C INT 1C -T ;T單步執(zhí)行單步執(zhí)行INT 1C AX=0000 BX=0000 CX=0000 DX=0000 SP=FFE8 BP=0000 SI=0000 DI=0000 DS=0F68 ES=0F68 SS=0F68 CS=F000
14、IP=FF53 NV UP DI PL NZ NA PO NC F000:FF53 CF IRET -D SS:FFE8 L08 ;查看執(zhí)行完后堆棧內(nèi)容查看執(zhí)行完后堆棧內(nèi)容 0F68:FFE0 02 01 68 2F 02 F2 00 00 . . h. -D 0:70 L10 ;查看中斷向量表查看中斷向量表0:70 0:73 0000:0070 53 FF 00 F0 A4 F0 00 F0-22 05 00 00 35 58 00 C0 .5X. -U F000:FF53 ;查看查看1C類型的中斷子程類型的中斷子程 F000:FF53 CF IRET . . .利用利用DEBUG學(xué)習(xí)學(xué)習(xí)I
15、NT指令指令: 清清IF目的:進(jìn)入中斷子程序后,禁止可屏蔽中斷目的:進(jìn)入中斷子程序后,禁止可屏蔽中斷 清清TF目的:進(jìn)入中斷子程序后不單步執(zhí)行中斷子程目的:進(jìn)入中斷子程序后不單步執(zhí)行中斷子程 不隨意修改中斷向量表的內(nèi)容,否則易造成死機(jī)不隨意修改中斷向量表的內(nèi)容,否則易造成死機(jī) 不隨意修改堆棧內(nèi)容不隨意修改堆棧內(nèi)容 6. 處理機(jī)控制指令處理機(jī)控制指令1) 標(biāo)志處理指令標(biāo)志處理指令 CLC, STC, CMC, CLD, STD, CLI, STI 2) 處理機(jī)控制指令處理機(jī)控制指令HLT, NOP, WAIT, ESC, LOCK1) 標(biāo)志處理指令標(biāo)志處理指令設(shè)置和清除標(biāo)志的指令,只影響指令指定
16、的標(biāo)志設(shè)置和清除標(biāo)志的指令,只影響指令指定的標(biāo)志2) 處理機(jī)控制指令處理機(jī)控制指令 空操作指令空操作指令NOP 格式格式 NOP 指令不執(zhí)行任何操作指令不執(zhí)行任何操作7 7、輸入輸出指令、輸入輸出指令1. 輸入指令輸入指令 IN IN AL , n;n是端口地址是端口地址, n 0FFH IN AX , DX2. 輸出指令輸出指令 OUT OUT n , AL/AX; OUT DX ,AL/AX;說(shuō)明說(shuō)明: 1、可傳送一個(gè)字節(jié)或字、可傳送一個(gè)字節(jié)或字 2、只能通過(guò)、只能通過(guò)AL或者或者AX傳送傳送直接的輸入輸出指令直接的輸入輸出指令指令中直接給出端口地址(地址0FFH):注意:注意: 只能用累
17、加器只能用累加器AXAX作為執(zhí)行輸入輸出的機(jī)構(gòu),間接作為執(zhí)行輸入輸出的機(jī)構(gòu),間接輸出指令的端口只能用輸出指令的端口只能用DXDX 尋址范圍:尋址范圍:直接輸入輸出指令為直接輸入輸出指令為0 0255255間接輸入輸出指令為間接輸入輸出指令為0 06553565535作 業(yè)1. 普通移位指令和循環(huán)移位指令(帶CF的和不帶CF的兩類)在執(zhí)行操作時(shí),有什么差別?在編制乘除法程序時(shí),為什么常用移位指令來(lái)代替乘除法指令?試編寫一個(gè)程序段,實(shí)現(xiàn)將BX中的數(shù)除以10,結(jié)果仍放在BX中。2.找出下列指令中所有對(duì)的指令,寫出題號(hào),錯(cuò)誤的請(qǐng)說(shuō)明原因。 (1) SHR AX,3 (2) AND 0FH,AL (3)
18、 SAL BX,CX(4) CBW BH (5) LEA BX,1000H (6) DIV 0010H(7) MOV AX, BX+BP (8) CMP BX,SI (9) JMP FAR BX十SI 3.用循環(huán)控制指令設(shè)計(jì)程序段,從60H個(gè)元素中尋找一個(gè)最大值,結(jié)果放在AL中。 4. 比較AX,BX,CX中有符號(hào)數(shù)的大小,將最大的數(shù)放在AX中,請(qǐng)編程。第三章 Intel 處理器指令系統(tǒng)和匯編語(yǔ)言3.1 16位處理器指令系統(tǒng)位處理器指令系統(tǒng)3.2 32位處理器指令系統(tǒng)位處理器指令系統(tǒng)3.3 匯編語(yǔ)言與匯編程序匯編語(yǔ)言與匯編程序3.4 匯編語(yǔ)言與高級(jí)語(yǔ)言的接口匯編語(yǔ)言與高級(jí)語(yǔ)言的接口3.3.1
19、匯編語(yǔ)言的語(yǔ)句格式匯編語(yǔ)言的語(yǔ)句格式 data SEGMENT ;數(shù)據(jù)段數(shù)據(jù)段var DB ? data ENDScode SEGMENT ;代碼段代碼段 ASSUME CS:code,DS:datastart: MOV AX, data MOV DS , AX MOV var, CL MOV AH , 4CH INT 21H ;返回返回DOScode ENDS END start標(biāo)號(hào)標(biāo)號(hào) : 助記符助記符 操作數(shù)操作數(shù) , ;注釋;注釋 名稱名稱 助記符項(xiàng)助記符項(xiàng) 操作數(shù)項(xiàng)操作數(shù)項(xiàng) 注釋項(xiàng)注釋項(xiàng)1. 標(biāo)號(hào)標(biāo)號(hào) 段名、變量名、標(biāo)號(hào)、過(guò)程名段名、變量名、標(biāo)號(hào)、過(guò)程名等。等。data SEGMEN
20、T ;數(shù)據(jù)段數(shù)據(jù)段var DB ? data ENDScode SEGMENT ;代碼段代碼段 ASSUME CS:code,DS:datastart: MOV AX, data MOV DS , AX MOV var, CL MOV AH , 4CH INT 21H ;返回返回DOScode ENDS END start標(biāo)號(hào)標(biāo)號(hào) : 助記符助記符 操作數(shù)操作數(shù) , ;注釋;注釋 名稱名稱 助記符項(xiàng)助記符項(xiàng) 操作數(shù)項(xiàng)操作數(shù)項(xiàng) 注釋項(xiàng)注釋項(xiàng)l 標(biāo)標(biāo)號(hào)的命名規(guī)定號(hào)的命名規(guī)定: 由字符由字符AZ ,az ,09及符號(hào)及符號(hào)、$、下劃線、下劃線_ 等組成,等組成, 最長(zhǎng)最長(zhǎng)31個(gè)字符,超出部分忽略。個(gè)
21、字符,超出部分忽略。 不能用數(shù)字打頭,以免與十六進(jìn)制數(shù)相混。不能用數(shù)字打頭,以免與十六進(jìn)制數(shù)相混。 盡量不使用匯編程序中的保留字。盡量不使用匯編程序中的保留字。 (如指令的助記符等如指令的助記符等) 對(duì)定義的符號(hào)不區(qū)分大小寫。對(duì)定義的符號(hào)不區(qū)分大小寫。匯編語(yǔ)言中的保留字匯編語(yǔ)言中的保留字l 保留字(保留字(Reserved Word)l 是匯編程序已經(jīng)利用的標(biāo)識(shí)符(也稱為關(guān)鍵字),主要有:是匯編程序已經(jīng)利用的標(biāo)識(shí)符(也稱為關(guān)鍵字),主要有:l 指令助記符指令助記符例如:例如:MOV、ADDl 偽指令助記符偽指令助記符例如:例如:DB、DWl 操作符操作符例如:例如:OFFSET、PTRl 寄存
22、器名寄存器名例如:例如:AX、CSl 預(yù)定義符號(hào)預(yù)定義符號(hào)例如:例如:data 匯編語(yǔ)言大小寫不敏感2. 助記符項(xiàng)助記符項(xiàng)指令、偽指令指令、偽指令對(duì)于指令對(duì)于指令,匯編程序?qū)⑵浞g成機(jī)器語(yǔ)言指令。,匯編程序?qū)⑵浞g成機(jī)器語(yǔ)言指令。 MOV AX, 100 B8 00 01對(duì)于偽指令對(duì)于偽指令,匯編程序據(jù)其要求的功能進(jìn)行處理。,匯編程序據(jù)其要求的功能進(jìn)行處理。 data SEGMENT data與一段值對(duì)應(yīng)與一段值對(duì)應(yīng) string DB Tsinghua string與一內(nèi)存地址對(duì)應(yīng)與一內(nèi)存地址對(duì)應(yīng)標(biāo)號(hào)標(biāo)號(hào) : 助記符助記符 操作數(shù)操作數(shù) , ;注釋;注釋 名稱名稱 助記符項(xiàng)助記符項(xiàng) 操作數(shù)項(xiàng)
23、操作數(shù)項(xiàng) 注釋項(xiàng)注釋項(xiàng)3操作數(shù)項(xiàng)操作數(shù)項(xiàng)l 操作數(shù)多于一個(gè)時(shí),用逗號(hào)分開。操作數(shù)多于一個(gè)時(shí),用逗號(hào)分開。l 操作數(shù)可以是操作數(shù)可以是常數(shù)常數(shù)、寄存器、存儲(chǔ)器操作數(shù)、寄存器、存儲(chǔ)器操作數(shù)、 標(biāo)號(hào)名、過(guò)程名或標(biāo)號(hào)名、過(guò)程名或表達(dá)式表達(dá)式等。等。標(biāo)號(hào)標(biāo)號(hào) : 助記符助記符 操作數(shù)操作數(shù) , ;注釋;注釋 名稱名稱 助記符項(xiàng)助記符項(xiàng) 操作數(shù)項(xiàng)操作數(shù)項(xiàng) 注釋項(xiàng)注釋項(xiàng)常數(shù)常數(shù)給出具體的數(shù)據(jù)給出具體的數(shù)據(jù), 可以是數(shù)字常量或字符常量。可以是數(shù)字常量或字符常量。 數(shù)字默認(rèn)十進(jìn)制,也可加數(shù)字默認(rèn)十進(jìn)制,也可加D表示十進(jìn)制數(shù)。表示十進(jìn)制數(shù)。如如 1234D, 1234 數(shù)字后加數(shù)字后加B表示二進(jìn)制數(shù)。表示二進(jìn)制數(shù)
24、。 如如 1010B 數(shù)字后加數(shù)字后加H表示十六進(jìn)制數(shù)。表示十六進(jìn)制數(shù)。 如如 1234H 字符常量,用單引號(hào)表示。字符常量,用單引號(hào)表示。 如如 1234 匯編時(shí),用字符對(duì)應(yīng)的匯編時(shí),用字符對(duì)應(yīng)的ASCII表示。表示。如如 31H, 32H, 33H, 34H例例 data1 DB 12, 34, 56 ;十進(jìn)制;十進(jìn)制 data2 DB 12H, 34H, 56H ;十六進(jìn)制;十六進(jìn)制 MOV AL, G ;字符;字符 string DB 1234 ;字符串;字符串l A、B、C、D、E、F開頭的十六進(jìn)制數(shù)前面加開頭的十六進(jìn)制數(shù)前面加0, 與與H結(jié)尾的標(biāo)識(shí)符區(qū)別。結(jié)尾的標(biāo)識(shí)符區(qū)別。如如 寄
25、存器名寄存器名AH、BH、CH、 DH 變量名變量名 abcdH 等等例例 mov AL, 0AH mov AL, AH mov BX, 0abcdH4注釋項(xiàng)注釋項(xiàng)l用分號(hào)間隔,用來(lái)說(shuō)明語(yǔ)句或程序的功能。用分號(hào)間隔,用來(lái)說(shuō)明語(yǔ)句或程序的功能。 匯編程序?qū)Ψ痔?hào)后的內(nèi)容不做處理。匯編程序?qū)Ψ痔?hào)后的內(nèi)容不做處理。l作用:作用: 注釋程序,增強(qiáng)程序可讀性。注釋程序,增強(qiáng)程序可讀性。 可放在語(yǔ)句最前,暫時(shí)注釋某語(yǔ)句可放在語(yǔ)句最前,暫時(shí)注釋某語(yǔ)句,調(diào)試程序用調(diào)試程序用例例 、 ; MOV AH, 2 ;顯示提示信息顯示提示信息 ; MOV DL, A ; INT 21H 、標(biāo)號(hào)標(biāo)號(hào) : 助記符助記符 操作
26、數(shù)操作數(shù) , ;注釋;注釋 名稱名稱 助記符項(xiàng)助記符項(xiàng) 操作數(shù)項(xiàng)操作數(shù)項(xiàng) 注釋項(xiàng)注釋項(xiàng)指示性語(yǔ)句與指令性語(yǔ)句:指示性語(yǔ)句與指令性語(yǔ)句:l指令性語(yǔ)句指令性語(yǔ)句是用指令系統(tǒng)中的指令構(gòu)成的語(yǔ)句。是用指令系統(tǒng)中的指令構(gòu)成的語(yǔ)句。 例例 MOV AX, BXl指示性語(yǔ)句指示性語(yǔ)句是指示匯編程序進(jìn)行匯編的操作。是指示匯編程序進(jìn)行匯編的操作。 例例 MOV AX, 4 + 8 中的中的+ code SEGMENT 中的中的SEGMENT MOV BX, OFFSET string 中的中的OFFSET3.3.3 偽指令偽指令 指示性語(yǔ)句與指令性語(yǔ)句指示性語(yǔ)句與指令性語(yǔ)句l 指令(指令(Instruction
27、Instruction)使使CPUCPU產(chǎn)生動(dòng)作、并在程產(chǎn)生動(dòng)作、并在程序執(zhí)行時(shí)才處理的指令序執(zhí)行時(shí)才處理的指令l 偽指令(偽指令(DirectiveDirective)不產(chǎn)生不產(chǎn)生CPUCPU動(dòng)作、在程序動(dòng)作、在程序執(zhí)行前由匯編程序處理的說(shuō)明性指令執(zhí)行前由匯編程序處理的說(shuō)明性指令l偽指令與具體的處理器類型無(wú)關(guān),但與匯編程偽指令與具體的處理器類型無(wú)關(guān),但與匯編程序有關(guān)。不同版本的匯編程序支持不同的偽指令序有關(guān)。不同版本的匯編程序支持不同的偽指令l指示性語(yǔ)句與指令性語(yǔ)句區(qū)別指示性語(yǔ)句與指令性語(yǔ)句區(qū)別一個(gè)程序經(jīng)匯編,連接和裝入內(nèi)存后,在執(zhí)行程序之一個(gè)程序經(jīng)匯編,連接和裝入內(nèi)存后,在執(zhí)行程序之前:前
28、: 指示性語(yǔ)句的功能已經(jīng)完成,故又稱偽操作。指示性語(yǔ)句的功能已經(jīng)完成,故又稱偽操作。 而指令性語(yǔ)句的功能尚未完成,需控制而指令性語(yǔ)句的功能尚未完成,需控制CPUCPU去執(zhí)行,去執(zhí)行,才能完成。才能完成。aa SEGMENT ;數(shù)據(jù)段數(shù)據(jù)段1 str1 DB Hello! aa ENDSbb SEGMENT ;數(shù)據(jù)段數(shù)據(jù)段2 str2 DB 6 dup (?) bb ENDScc SEGMENT ;代碼段代碼段 ASSUME CS:ccASSUME DS:aa, ES:bb start: CLD MOV AX , aa MOV DS , AX LEA SI , str1 MOV AX , bb
29、MOV ES , AX LEA DI , str2 MOV CX , 6 REP MOVSB MOV AH , 4CH INT 21H cc ENDS END start D:masmDEBUG hello2.exe-U :查看代碼段查看代碼段12A0:0000 FC CLD12A0:0001 B89E12 MOV AX , 129E12A0:0004 8ED8 MOV DS , AX12A0:0006 8D360000 LEA SI , 000012A0:000A B89F12 MOV AX , 129F12A0:000D 8EC0 MOV ES , AX12A0:000F 8D3E0000
30、 LEA DI , 000012A0:0013 B90600 MOV CX , 000612A0:0016 F3 REPZ12A0:0017 A4 MOVSB12A0:0018 B44C MOV AH,4C12A0:001A CD21 INT 21、-D 129E:0 L10 ;查看數(shù)據(jù)段查看數(shù)據(jù)段1的內(nèi)容的內(nèi)容129E:0000 48 65 6C 6C 6F 21 00 00-00 00 00 00 00 00 00 00 Hello!.-D 129F:0 L10 ;查看數(shù)據(jù)段查看數(shù)據(jù)段2的內(nèi)容的內(nèi)容129F:0000 00 00 00 00 00 00 00 00-00 00 00 00
31、00 00 00 00 .- -數(shù)據(jù)傳送源程序數(shù)據(jù)傳送源程序hello2.asm 程序經(jīng)匯編、連接后,裝入內(nèi)存的情況如下:程序經(jīng)匯編、連接后,裝入內(nèi)存的情況如下:1. 定義數(shù)據(jù)偽指令定義數(shù)據(jù)偽指令 DB/DW/DD 變量名變量名 類型助記符類型助記符 操作數(shù)操作數(shù) ,操作數(shù)操作數(shù) , . 用來(lái)定義程序中所用的內(nèi)存操作數(shù)。用來(lái)定義程序中所用的內(nèi)存操作數(shù)。 其中其中 變量名變量名指示內(nèi)存操作數(shù)的地址(符號(hào)地址)指示內(nèi)存操作數(shù)的地址(符號(hào)地址) 類型助記符類型助記符指示內(nèi)存操作數(shù)的類型指示內(nèi)存操作數(shù)的類型(字節(jié)、字、雙字等字節(jié)、字、雙字等) 操作數(shù)操作數(shù)指示內(nèi)存操作數(shù)的內(nèi)容指示內(nèi)存操作數(shù)的內(nèi)容 匯編
32、程序?qū)⒍x的操作數(shù),按其類型分配內(nèi)存單元數(shù)匯編程序?qū)⒍x的操作數(shù),按其類型分配內(nèi)存單元數(shù), 順序存入變量名指向的內(nèi)存單元中。順序存入變量名指向的內(nèi)存單元中。 常用的類型助記符有:常用的類型助記符有:DB 指示其后的操作數(shù)為字節(jié)類型指示其后的操作數(shù)為字節(jié)類型DW 指示其后的操作數(shù)為字類型指示其后的操作數(shù)為字類型DD 指示其后的操作數(shù)為雙字類型指示其后的操作數(shù)為雙字類型例例: 定義賦初值的變量定義賦初值的變量 data SEGMENT xx DB 1, -1, 0fcH yy DW 1, -1, 0fcH zz DD 1,- 1, 0fcH data ENDSxxyyzz01FFFC0100FFF
33、FFC0001000000FFFFFFFFFC000000 1- -1FC 1- -1FC 1- -1FC例例: 定義字符串變量定義字符串變量( 只能用只能用DB定義定義 ) data SEGMENT str1 DB TsingHua str2 DB INPUT: , 0dH , 0aH ,$ data ENDS注意注意:3個(gè)及其以上的字符,個(gè)及其以上的字符, 只能用只能用DB定義定義str1 DW abcdstr2 DD abcdstr1str25473696e67487561494e5055543a0d0a24TsingHuaINPUT:0dH0aH$str1 DB 54h,73h,69h,6eh,67h,48h,75h,61h操作數(shù)可以是用操作數(shù)可以是用常量、表達(dá)式和常量、表達(dá)式和 ? 表示。表示。 表示內(nèi)存操作數(shù)的初始值表示內(nèi)存操作數(shù)的初始值例例 aa DB 270 bb DW 8000
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)聯(lián)企業(yè)合同范例
- 2025年上海貨運(yùn)從業(yè)資格證考試答案
- 2025年崇左貨運(yùn)上崗證考試考哪些科目
- 2025年邯鄲貨車叢業(yè)資格證考試題
- 低壓車回收合同范本
- 農(nóng)村建房裝修合同范本
- 養(yǎng)殖合作加盟協(xié)議合同范本
- 農(nóng)耕地出租合同范本
- 傳媒簽約合同范本
- 加氣站合同范本
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
- 2024環(huán)氧磨石地坪施工技術(shù)規(guī)程
- 五年級(jí)下冊(cè)小學(xué)數(shù)學(xué)《分?jǐn)?shù)的加法和減法》單元作業(yè)設(shè)計(jì)
- 醫(yī)學(xué)文獻(xiàn)管理制度
- 白塞氏病學(xué)習(xí)課件
- 川教版六年級(jí)《生命.生態(tài).安全》下冊(cè)第1課《我們的閑暇時(shí)光》課件
- 2024年建筑業(yè)10項(xiàng)新技術(shù)
- 重大風(fēng)險(xiǎn)管控方案及措施客運(yùn)站
- 新編大學(xué)英語(yǔ)跨文化交際教程 課件 Unit 1-A Chinese Character
- 方案偏離處理措施
評(píng)論
0/150
提交評(píng)論