版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編語言(教材 王爽)期末考試復(fù)習(xí):考試題型:選擇、填空、程序分析、編程題一、 重點(diǎn)復(fù)習(xí)課本的檢測(cè)點(diǎn)1.1-3.2與課后實(shí)驗(yàn)1-14:二、 需要掌握的指令見后面附錄三、 匯編語言主要知識(shí)點(diǎn):寄存器與存儲(chǔ)器1. 寄存器功能. 寄存器的一般用途和專用用途. CS:IP 控制程序執(zhí)行流程. SS:SP 提供堆棧棧頂單元地址. DS:BX(SI,DI) 提供數(shù)據(jù)段內(nèi)單元地址. SS:BP 提供堆棧內(nèi)單元地址. ES:BX(SI,DI) 提供附加段內(nèi)單元地址. AX,CX,BX和CX寄存器多用于運(yùn)算和暫存中間計(jì)算結(jié)果,但又專用于某些指令(查閱 指令表)。. PSW程序狀態(tài)字寄存器只能通過專用指令(LAH
2、F, SAHF)和堆棧(PUSHF,POPF)進(jìn)行存取。2. 存儲(chǔ)器分段管理. 解決了16位寄存器構(gòu)成20位地址的問題. 便于程序重定位. 20位物理地址=段地址 * 16 + 偏移地址. 程序分段組織: 一般由代碼段,堆棧段,數(shù)據(jù)段和附加段組成,不設(shè)置堆棧段時(shí) 則使用系統(tǒng)內(nèi)部的堆棧。3. 堆棧. 堆棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu) , 數(shù)據(jù)的存取在棧頂進(jìn)行 , 數(shù)據(jù)入棧使堆棧向地址減小的方向擴(kuò)展。. 堆棧常用于保存子程序調(diào)用和中斷響應(yīng)時(shí)的斷點(diǎn)以及暫存數(shù)據(jù)或中間計(jì)算結(jié)果 。. 堆??偸且宰譃閱挝淮嫒≈噶钕到y(tǒng)與尋址方式1. 指令系統(tǒng). 計(jì)算機(jī)提供給用戶使用的機(jī)器指令集稱為指令系統(tǒng),大多數(shù)指令為雙操作數(shù)
3、指令。執(zhí)行指令后,一般源操作數(shù)不變,目的操作數(shù)被計(jì)算結(jié)果替代。. 機(jī)器指令由CPU執(zhí)行,完成某種運(yùn)算或操作,8086/8088指令系統(tǒng)中的指令分為6類: 數(shù)據(jù)傳送,算術(shù)運(yùn)算,邏輯運(yùn)算,串操作,控制轉(zhuǎn)移和處理機(jī)控制。2. 尋址方式. 尋址方式確定執(zhí)行指令時(shí)獲得操作數(shù)地址的方法. 分為與數(shù)據(jù)有關(guān)的尋址方式(7種)和與轉(zhuǎn)移地址有關(guān)的尋址方式(4)種。. 與數(shù)據(jù)有關(guān)的尋址方式的一般用途:(1) 立即數(shù)尋址方式-將常量賦給寄存器或存儲(chǔ)單元(2) 直接尋址方式-存取單個(gè)變量(3) 寄存器尋址方式-訪問寄存器的速度快于訪問存儲(chǔ)單元的速度(4) 寄存器間接尋址方式-訪問數(shù)組元素(5) 變址尋址方式(6) 基址
4、變址尋址方式(7) 相對(duì)基址變址尋址方式(5),(6),(7)都便于處理數(shù)組元素. 與數(shù)據(jù)有關(guān)的尋址方式中,提供地址的寄存器只能是BX,SI,DI或BP. 與轉(zhuǎn)移地址有關(guān)的尋址方式的一般用途:(1) 段內(nèi)直接尋址-段內(nèi)直接轉(zhuǎn)移或子程序調(diào)用(2) 段內(nèi)間接尋址-段內(nèi)間接轉(zhuǎn)移或子程序調(diào)用(3) 段間直接尋址-段間直接轉(zhuǎn)移或子程序調(diào)用(4) 段間間接尋址-段間間接轉(zhuǎn)移或子程序調(diào)用匯編程序和匯編語言1. 匯編程序. 匯編程序是將匯編語言源程序翻譯成二進(jìn)制代碼程序的語言處理程序,翻譯的過程稱為匯編。2. 匯編語言. 匯編語言是用指令助記符,各種標(biāo)識(shí)變量,地址,過程等的標(biāo)識(shí)符書寫程序的語言, 匯編語言指令
5、與機(jī)器指令一 一對(duì)應(yīng)。. 偽指令,宏指令不是由CPU執(zhí)行的指令,而是由匯編程序在匯編期間處理的指令。. 偽指令指示匯編程序如何完成數(shù)據(jù)定義,存儲(chǔ)空間分配,組織段等工作。. 宏指令可簡(jiǎn)化程序并減少程序書寫量。. 條件匯編偽指令的功能是確定是否匯編某段源程序,而不是實(shí)現(xiàn)程序分支,對(duì)未匯編的程序?qū)⒉划a(chǎn)生相應(yīng)的目標(biāo)代碼。. 結(jié)構(gòu)作為一種數(shù)據(jù)結(jié)構(gòu)可將一組類型不同但有邏輯關(guān)聯(lián)的數(shù)據(jù)組織在一起,便于 整體處理數(shù)據(jù)。. 記錄可用于提高存儲(chǔ)單元的利用率,將若干不足一個(gè)字節(jié)或字且有邏輯關(guān)聯(lián)的信 息壓縮存放在一個(gè)字節(jié)或字中。. 指令中的表達(dá)式在匯編期間計(jì)算,并且只能對(duì)常量或地址進(jìn)行計(jì)算。程序設(shè)計(jì)基礎(chǔ)1. 分支程序設(shè)
6、計(jì). 程序分支由條件轉(zhuǎn)移指令或無條件轉(zhuǎn)移指令實(shí)現(xiàn). 存放若干目的轉(zhuǎn)移地址或跳轉(zhuǎn)指令的跳轉(zhuǎn)表常用于實(shí)現(xiàn)多路分支. 條件轉(zhuǎn)移指令只能實(shí)現(xiàn)偏移量為-128至+127字節(jié)范圍的轉(zhuǎn)移. 無條件轉(zhuǎn)移指令根據(jù)尋址方式可實(shí)現(xiàn)短轉(zhuǎn)移(偏移量為-128至+127字節(jié)),段內(nèi)轉(zhuǎn) 移,段間轉(zhuǎn)移。2. 循環(huán)程序設(shè)計(jì). 可由循環(huán)控制指令或條件轉(zhuǎn)移指令組織循環(huán)結(jié)構(gòu). 內(nèi)層循環(huán)結(jié)構(gòu)必須完全包含在外層循環(huán)結(jié)構(gòu)內(nèi),并不能發(fā)生從循環(huán)結(jié)構(gòu)外向循環(huán) 結(jié)構(gòu)內(nèi)的轉(zhuǎn)移。3. 子程序設(shè)計(jì). 子程序中應(yīng)保護(hù)寄存器內(nèi)容,并正確使用堆棧, 成對(duì)執(zhí)行PUSH和POP指令,保證執(zhí)行RET指令時(shí)堆棧棧頂為返回地址。. 主程序可通過寄存器,參數(shù)表,或堆棧傳
7、遞參數(shù)給子程序 4. EXE文件和COM文件. 二者都是可執(zhí)行文件. COM文件源程序的特點(diǎn)是: 第一條可執(zhí)行指令的起始存放地址必須是100H,不能分段,不用定義堆棧,所有過程為NEAR類型,直接用INT 20H 指令返回DOS。5. DOS功能調(diào)用與BIOS中斷調(diào)用. 二者都是完成DOS系統(tǒng)提供給用戶的輸入/輸出等常用功能,通過執(zhí)行軟中斷指令 完成一次軟中斷服務(wù)。. DOS功能調(diào)用的中斷服務(wù)程序是操作系統(tǒng)的一部分,存于RAM中; 而BIOS中斷調(diào)用的中斷服務(wù)程序存放在ROM中。輸入/輸出與中斷系統(tǒng)1. 輸入/輸出的方式. 程序直接I/O方式: 用IN和OUT指令直接在端口級(jí)上進(jìn)行I/O操作,
8、數(shù)據(jù)傳送方式 分為無條件傳送方式和查詢傳送方式。. 中斷傳送方式: 由CPU響應(yīng)中斷請(qǐng)求完成中斷服務(wù)。. DMA傳送方式: 直接在存儲(chǔ)器與外設(shè)之間傳送數(shù)據(jù)。2. 有關(guān)中斷的概念. 中斷、中斷源、中斷請(qǐng)求、中斷服務(wù)、中斷向量、中斷向量表、中斷響應(yīng)過程、中斷指令、開中斷、關(guān)中斷、內(nèi)部中斷、外部中斷、可屏蔽中斷、非屏蔽中斷。四、程序編寫及程序分析填空類的題目:(主要是書中的實(shí)驗(yàn))1、 編程,向內(nèi)存0:2000:23f依次傳遞數(shù)據(jù)063(3fh),程序中只能使用9條指令,9條指中包括“mov ax,4c00h”和“int 21h”。以及實(shí)驗(yàn)4的第3小題 將指令復(fù)制到0:200處2、 編程,將datas
9、g段中每個(gè)單詞的前4個(gè)字母改寫為大寫字母。assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdw 0,0,0,0,0,0,0,0stacksg endsdatasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify 'datasg ends3、 編程:在屏幕中間分別顯示綠色、綠底紅色、白底藍(lán)色的字符串'welcome to masm!'。4、 編寫子程序:顯示字符串;名稱:sho
10、w_str;功能:在屏幕的指定位置,用指定顏色,顯示一個(gè)用0結(jié)尾的字符串;參數(shù):(dh)=行號(hào),(dl)=列號(hào)(取值范圍080),(cl)=顏色,ds:si:該字符串的首地址;返回:顯示在屏幕上5、 編寫子程序:.解決除法溢出問題;名稱:divdw;功能:除法,被除數(shù)32位,除數(shù)16位,商32位,余數(shù)16位,不會(huì)溢出;參數(shù):(dx)=被除數(shù)高16位,(ax)=被除數(shù)低16位,(cx)=除數(shù);返回:(dx)=商高16位,(ax)=商低16位,(cx)=余數(shù)6、 數(shù)值顯示;名稱:dtoc_word;功能:將一個(gè)word型數(shù)轉(zhuǎn)化為字符串;參數(shù):(ax)=word型的數(shù)據(jù),ds:si指向字符串的首地址
11、;返回:ds:si放此字符串,以0結(jié)尾7、 編寫子程序;名稱:letterc;功能:將以0結(jié)尾的字符串中的小寫字母轉(zhuǎn)變成大寫字母;參數(shù):ds:si開始存放的字符串;返回:ds:si開始存放的字符串8、 編寫0號(hào)中斷的處理程序編寫0號(hào)中斷的處理程序,使得在除法溢出發(fā)生時(shí),在屏幕中間顯示字符串“divide error!”,然后返回到DOS。五、參考習(xí)題1什么是堆棧操作?以下關(guān)于堆棧操作的指令執(zhí)行后,SP的值是多少?PUSH AXPUSH CXPUSH DXPOP AXPUSH BXPOP CXPOP DX堆棧被定義為一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),即最后進(jìn)棧的元素將被最先彈出來。堆棧從一個(gè)稱為棧底的位置
12、開始,數(shù)據(jù)進(jìn)入堆棧的操作稱為壓入(或壓棧),數(shù)據(jù)退出堆棧的操作稱為彈出,每進(jìn)行一次彈出操作,堆棧就減少一個(gè)元素,最后一次壓入的元素,稱為棧頂元素,壓入彈出操作都是對(duì)棧頂元素進(jìn)行的堆棧的兩種基本的操作。在進(jìn)行以上一系列堆棧操作后,SP指針的值是原SP-2。2用匯編語言指令實(shí)現(xiàn)以下操作。(1) 將寄存器AX、BX和DX的內(nèi)容相加,和放在寄存器DX中。ADD AX,BXADD DX,AX(2) 用基址變址尋址方式(BX和SI)實(shí)現(xiàn)AL寄存器的內(nèi)容和存儲(chǔ)器單元BUF中的一個(gè)字節(jié)相加的操作,和放到AL中。ADD AL,BYTE PTR BXSI(3) 用寄存器BX實(shí)現(xiàn)寄存器相對(duì)尋址方式(位移量為100H
13、),將DX的內(nèi)容和存儲(chǔ)單元中的一個(gè)字相加,和放到存儲(chǔ)單元中。ADD 100HBX,DX(4) 用直接尋址方式(地址為0500H)實(shí)現(xiàn)將存儲(chǔ)器中的一個(gè)字與立即數(shù)3ABCH相加,和放回該存儲(chǔ)單元中。ADD 0500H,3ABCH(5) 用串操作指令實(shí)現(xiàn)將內(nèi)存定義好的兩個(gè)字節(jié)串BUF1和BUF2相加后,存放到另一個(gè)串BUF3中的功能。MOV CX,COUNTMOV SI,OFFSET BUF1MOV DI,OFFSET BUF3MOV BX,OFFSET BUF2AGAIN:LODSBADD AL,BXSTOSBINC BXDEC CXJNZ AGAIN3指出下列指令中,源操作數(shù)及目的操作數(shù)的尋址方
14、式。(1) SUB BX,BP+35 ;寄存器尋址、寄存器相對(duì)尋址(2) MOV AX,2030H ;寄存器尋址、立即尋址(3) SCASB ;隱含操作數(shù)為寄存器尋址和寄存器間接尋址(4) IN AL,40H ;寄存器尋址、立即尋址(5) MOV DI+BX,AX ;基址加變址尋址、寄存器尋址(6) ADD AX,50HDI ;寄存器尋址、寄存器相對(duì)尋址(7) MOV AL,1300H ;寄存器尋址、直接尋址(8) MUL BL ;寄存器尋址、目的操作數(shù)為隱含寄存器尋址4已知(DS)= 1000H,(SI)= 0200H,(BX)= 0100H,(10100H)= 11H,(10101H)=
15、22H,(10600H)= 33H,(10601H)= 44H,(10300H)= 55H,(10301H)= 66H,(10302H)= 77H,(10303H)= 88H,試分析下列各條指令執(zhí)行完后AX寄存器的內(nèi)容。(1) MOV AX,2500H (AX)=2500H(2) MOV AX,500HBX (AX)=4433H(3) MOV AX,300H (AX)=6655H(4) MOV AX,BX (AX)=2211H(5) MOV AX,BXSI (AX)=6655H(6) MOV AX,BX+SI+2 (AX)=8877H5判斷下列指令是否有錯(cuò),如果有錯(cuò),說明理由。(1) SUB
16、BL,BX ;兩個(gè)操作數(shù)的寬度不一樣(2) MOV BYTE PTRBX,3456H ;將16位的立即數(shù)傳送到一個(gè)字節(jié)的內(nèi)存單元(3) SHL AX,CH ;移位指令的移位位數(shù)用CL給出,不能用CH。(4) MOV AH,SIDI ;不能用兩個(gè)變址寄存器來實(shí)現(xiàn)尋址操作(5) SHR AX,4 ;只有當(dāng)移位位數(shù)為1時(shí),才能用立即數(shù)表達(dá)(6) MOV CS,BX ;不能對(duì)CS實(shí)現(xiàn)傳送操作(7) MOV 125,CL ;立即數(shù)不能做目的操作數(shù)(8) MOV AX,BYTE PTRSI ;源操作數(shù)限定為字節(jié),與目的操作數(shù)寬度不一致(9) MOV DI,SI ;兩個(gè)操作數(shù)不能同時(shí)為內(nèi)存數(shù)6設(shè)(DS)=
17、1000H,(ES)= 2000H,(SS)= 3000H,(SI)= 0080H,(BX)= 02D0H,(BP)= 0060H,試指出下列指令的源操作數(shù)字段是什么尋址方式?它的物理地址是多少?(1) MOV AX,0CBH 立即尋址(2) MOV AX,100H 直接尋址,物理地址為:10100H(3) MOV AX,BX 寄存器間接尋址,物理地址為:102D0H(4) MOV AX,BP 寄存器間接尋址,物理地址為:20060H(5) MOV AX,BP+50 寄存器相對(duì)尋址,物理地址為:200B0H(6) MOV AX,BXSI 基址加變址尋址,物理地址為:10350H7分別說明下列每
18、組指令中的兩條指令的區(qū)別.(1) AND CL,0FH 按位相“與”,高4位為“0000”,低4位保留原值;OR CL,0FH 按位相“或”,高4位為原值,低4位為“1111”。(2) MOV AX,BX 將BX寄存器的內(nèi)容傳送到AX寄存器中;MOV AX,BX 將BX寄存器所指的內(nèi)存單元的內(nèi)容送AX寄存器中。(3) SUB BX,CX BX寄存器內(nèi)容減去CX寄存器的內(nèi)容,結(jié)果送回到BX;CMP BX,CX BX內(nèi)容減去CX內(nèi)容,但結(jié)果不送回,而根據(jù)標(biāo)志位的情況做進(jìn)一步的動(dòng)作。(4) AND AL,01H AL內(nèi)容與01H相“與”,結(jié)果為“0000000x”送回AL寄存器;TEST AL,01
19、H AL內(nèi)容與01H相“與”,結(jié)果為“0000000x”不送回AL寄存器,而根據(jù)標(biāo)志位(ZF)情況做進(jìn)一步的動(dòng)作。(5) JMP NEAR PTR NEXT NEXT所指指令在當(dāng)前指令的同段內(nèi)(16位地址范圍);JMP SHORT NEXT NEXT所指指令在當(dāng)前指令的8位地址范圍內(nèi)。(6) ROL AX,CL 循環(huán)左移,進(jìn)位標(biāo)志位不參與循環(huán);RCL AX,CL 循環(huán)左移,進(jìn)位標(biāo)志位參與循環(huán)。(7) PUSH AX 將AX內(nèi)容存入棧頂指針處,即進(jìn)棧操作;POP AX 將棧頂內(nèi)容彈出裝入AX寄存器中,即出棧操作。8 試分析以下程序段執(zhí)行完后BX的內(nèi)容為何?MOV BX,1030HMOV CL,3
20、SHL BX,CLDEC BX程序執(zhí)行完后,BX=817FH,執(zhí)行過程如下。9、在BUF1變量中依次存儲(chǔ)了5個(gè)字?jǐn)?shù)據(jù),接著定義了一個(gè)名為BUF2的字單元,表示如下:BUF1 DW 8765H,6CH,0,1AB5H,47EAHBUF2 DW ?(1) 設(shè)BX中是BUF1的首地址,請(qǐng)編寫指令將數(shù)據(jù)50H傳送給BUF2單元。ADD BX,10MOV WORD PTRBX,50H(2) 請(qǐng)編寫指令將數(shù)據(jù)FFH傳送給數(shù)據(jù)為0的單元。ADD BX,4MOV WORD PTRBX,F(xiàn)FH10、下面是一個(gè)數(shù)據(jù)段的定義,請(qǐng)用圖表示它們?cè)趦?nèi)存中存放的形式。DATA SEGMENTA1 DB 25H,35H,45
21、HA2 DB 3 DUP(5)A3 DW 200,3AB6HA4 DW 3000H,6A6FHDATA ENDSA125H35H45HA205H05H05HA300H02HB6H3AHA400H30H6FH6AH11、說明下列語句所分配的存儲(chǔ)空間及初始化的數(shù)據(jù)值。(1)BYTE_VAR DB BYTE,21,-42H,3 DUP(0,?,2 DUP(2,3),?)(2)WORD_VAR DW 5 DUP(4,2,0),?,-8,BY,TE256HBYTE_VAR42HWORD_VAR04H59H00H54H02H45H00H15H00H10111110B00H004H00H202H300H20
22、0H300H04H000H02H200H300H200H304H00H002H00H200H300H204H300H02H00H00H00H11111000B11111111B42H59H54H45H56H02H12、在下列數(shù)據(jù)傳送程序段中有些使用不當(dāng)?shù)恼Z句,請(qǐng)改正之。A DB 10H,20H,OPQ,4FHB DB N DUP(?) ;改為B DB 6 DUP(?)MOV DI,A ;改為MOV DI,OFFSET AMOV SI,B ;改為MOV SI,OFFSET BMOV CX,LENGTH A ;改為MOV CX,LENGTH BCC: MOV AX,DIMOV SI,AXINC S
23、IINC DIDEC CX ;去掉該句LOOP CC13、有一個(gè)數(shù)據(jù)段定義了如下6個(gè)變量,請(qǐng)寫出該數(shù)據(jù)段。(1)BUF1為十進(jìn)制數(shù)字節(jié)變量:64;(2)BUF2為字符串變量:Teacher;(3)BUF3為十六進(jìn)制數(shù)字節(jié)變量:2FH;(4)BUF4為雙字變量:657AH;(5)BUF5為字變量:657AH;(6)BUF6為二進(jìn)制數(shù)字節(jié)變量:10101101B。DATA SEGMENT BUF1 DB 64BUF2 DB TeacherBUF3 DB 2FHBUF4 DD 657AHBUF5 DW 657AHBUF6 DB 10101101B14以下為用段基址:偏移量形式表示的內(nèi)存地址,試計(jì)算它
24、們的物理地址。 12F8:0100 1A2F:0103 1A3F:0003 1A3F:A1FF15 自12FA:0000開始的內(nèi)存單元中存放以下數(shù)據(jù)(用十六進(jìn)制形式表示):03 06 11 A3 13 01,試分別寫出12FA:0002的字節(jié)型數(shù)據(jù)、字型數(shù)據(jù)及雙字型數(shù)據(jù)的值。16分別指出下列指令中源操作數(shù)和目標(biāo)操作數(shù)的尋址方式。 MOV BX,12 MOV AL,128 MOV BX,DX MOV DS,AX MOV VAR,8 MOV 1000H,DX MOV 6BX,CX MOV AX,BXSI MOV TABBPDI,AL17 在80X86系統(tǒng)中,設(shè)(DS)1000H,(ES)2000H
25、,(SS)1200H,(BX)0300H,(SI)0200H,(BP)0100H,VAR的偏移量為0060H,若目標(biāo)操作數(shù)為存儲(chǔ)器操作數(shù),請(qǐng)計(jì)算目標(biāo)操作數(shù)的物理地址是多少? MOV BX,12 MOV AL,128 MOV BX,DX MOV ES:SI,AX MOV VAR,8 MOV 1000H,DX MOV 6BX,CX MOV BXSI,AX MOV 6BPSI,AL18 指出下指令的不同: MOV AX,3000H 與 MOV AX,3000H MOV AX,MEM 與 MOV AX,OFFSET MEM MOV AX,MEM 與 LEA AX,MEM19 指出下列指令的錯(cuò)誤: MO
26、V AX,BX MOV AL,1280 MOV BX,9 MOV DS,1000H MOV VAR,BX MOV M1,M2 MOV 6,CX MOV AX,SIDI MOV CS,AX MOV BX,OFFSET VARSI 20 自BUFFER單元開始連續(xù)存放著兩個(gè)字型數(shù)據(jù),編程序求它們的和,并把結(jié)果存放在這兩個(gè)數(shù)據(jù)之后。21 寫出把首址為BUF的字型數(shù)組的第4個(gè)字送到AX寄存器的指令,要求使用以下幾種尋址方式: 直接尋址方式 使用BX的寄存器間接尋址方式 使用BX的寄存器相對(duì)尋址方式22 設(shè)(DS)1000H,(BX)0300H,(SI)0002H,(DI)0100H,自1000:030
27、0單元開始存有以下數(shù)據(jù)(用十六進(jìn)制形式表示):12 34 56 78 90 AB CD EF,試說明下列各條指令執(zhí)行后目標(biāo)操作數(shù)的內(nèi)容。 ADD BX,12 MOV DX,0300H SUB BYTE PTR BX,8 MOV AX,BXSI MOV CX,5BX MOV DX,4BXSI 23 編程序使: 使AL的各位變反。 BX寄存器低四位置1。 AX寄存器的低四位清0。 使CX寄存器的低四位變反。 用TEST指令測(cè)試AL寄存器的位0和位6是否同時(shí)為0,若是則把0送DH寄存器,否則把1送DH寄存器。24 下列語句各為變量分配了多少字節(jié)? N1 DB 5 N2 DB 123 N3 DB 12
28、3 N4 DB 80,?,80 DUP (0) N5 DW 1,2,3 N6 DD 6,100 N7 DD N3 N8 DW N4 N9 DW N4+225 對(duì)于第12題,若N1的地址為1470:0000,其后的變量依次連續(xù)存放,試給出各變量的偏移量。N7N9變量的值是多少?14 如果定義了如第12題所示的變量,下列指令執(zhí)行的結(jié)果是什么(若語句正確,則給出執(zhí)行結(jié)果;若不正確,說明錯(cuò)誤原因)? ADD N1,10 MOV AL,N2 SUB N3,N2 MOV AL,N3+2 LEA DX,N4+2 XOR N5,0FH MOV N4+1,CX AND N1,01234H NUM1 EQU 89
29、ADD NUM1,10 NUM2 EQU 100NUM2 EQU 120 26 假設(shè)有下列數(shù)據(jù)定義語句: M1 DB 10 M2 DW 2345H M3 DD 987865H試寫出匯編程序?qū)@些語句匯編后所生成的值(例如M2單元、M21單元的內(nèi)容)。 27 有以下程序片段,試問匯編后符號(hào)L1和L2的值各為多少?BUF1 DB 1,2,3BUF2 DW 5,6,7L1 EQU BUF2L2 EQU BUF2BUF128. 若AX=0ABCDH,BX=7F8FH,CF=1。 求分別執(zhí)行8086 CPU指令 ADD AX,BX ADC AX,BX SBB
30、; AX,BX NEG AX AND AX,BX OR AX,BX XOR AX, BX IMUL BL后,AX寄存器中的內(nèi)容,29. 指出下列指令中哪些是錯(cuò)誤的,并指出錯(cuò)在何處? MOV DL,DX MOV ES,2000H SUB BX,SI ADD AX,BX+CX XCHG DS,2400H DEC 15H IN AL,DX OUT 300H,AX 解答 錯(cuò),DX不能作為間接尋址的寄存器。 錯(cuò),立即數(shù)不能直接送給段寄存器。
31、; 錯(cuò),兩個(gè)存儲(chǔ)單元間內(nèi)容不能直接相減。 錯(cuò),CX寄存器不能作為變址寄存器。 錯(cuò),不允許段寄存器與存儲(chǔ)單元內(nèi)容進(jìn)行交換 錯(cuò),減1指令不能對(duì)段寄存器直接操作 對(duì) 錯(cuò),輸出指令的地址若是16位,必須用DX間址。 30. 下列程序段執(zhí)行后 AX=?設(shè)數(shù)據(jù)段有: TABLE DW 100,200,300,400
32、; ENTRY DW 3代碼段 對(duì)DS初始化 MOV BX,OFFSET TABLEMOV SI,ENTRY MOV AX,BX+SI 31. 若SS=1000H,SP=2000H,AX=1234H,BX=5678H,F(xiàn)R=2115,試說明執(zhí)行指令 PUSH AX &
33、#160; PUSH BX PUSHF POP CX POP DX之后,SP=? SS=? CX=? DX=? 并畫圖指出
34、堆棧中各單元的內(nèi)容。解答: SS=1000H SP=1FFEH CX=2115H DX=5678H 棧中各單元內(nèi)容如下所示: 地址RAM11FFAH211511FFCH567811FFEH123412000H
35、; 32、讀下列程序段:寫出; (1)每條指令連續(xù)執(zhí)行后,哪些寄存器發(fā)生變化?內(nèi)容是什么? (2)程序段執(zhí)行完后,BX寄存器的肉容是什么? MOV BX,3F93H MOV CL ,4 ADD BX ,CL MOV AL ,BL AND AL ,0FH 0R AL ,30H六 附錄:匯編指令紅色為需要掌握的匯編指令:一、數(shù)據(jù)傳輸指令 它們?cè)诖尜A器和寄存器、寄存器和輸入輸出端口之間傳送數(shù)據(jù). 1. 通用數(shù)據(jù)傳送指令. MOV 傳送字或字節(jié). MOVSX 先符號(hào)擴(kuò)展,再傳送. MOVZX 先零擴(kuò)展,再傳送. PUSH 把字壓入堆
36、棧. POP 把字彈出堆棧. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧. BSWAP 交換32位寄存器里字節(jié)的順序 XCHG 交換字或字節(jié).( 至少有一個(gè)操作數(shù)為寄存器,段寄存器不可作為操作數(shù)) CMPXCHG 比較并交換操作數(shù).( 第二個(gè)操作數(shù)必須為累加器AL/AX/EAX ) XADD 先交換再累加.(
37、 結(jié)果在第一個(gè)操作數(shù)里 ) XLAT 字節(jié)查表轉(zhuǎn)換. BX 指向一張 256 字節(jié)的表的起點(diǎn), AL 為表的索引值 (0-255,即0-FFH); 返回 AL 為查表結(jié)果. ( BX+AL->AL ) 2. 輸入輸出端口傳送指令. IN I/O端口輸入. ( 語法: IN 累加器, 端口號(hào)DX ) OUT I/O端口輸出. ( 語法: OUT 端口號(hào)DX,累加器 ) 輸入輸出端口由立即方式指定時(shí), 其范圍是 0-255; 由寄存器 DX 指定時(shí), 其范圍是 0-65535. 3. 目的地址傳送指令. LEA 裝入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS
38、 傳送目標(biāo)指針,把指針內(nèi)容裝入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 傳送目標(biāo)指針,把指針內(nèi)容裝入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 傳送目標(biāo)指針,把指針內(nèi)容裝入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 傳送目標(biāo)指針,把指針內(nèi)容裝入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 傳送目標(biāo)指針,把指針內(nèi)容裝入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 標(biāo)志傳送指令. LA
39、HF 標(biāo)志寄存器傳送,把標(biāo)志裝入AH. SAHF 標(biāo)志寄存器傳送,把AH內(nèi)容裝入標(biāo)志寄存器. PUSHF 標(biāo)志入棧. POPF 標(biāo)志出棧. PUSHD 32位標(biāo)志入棧. POPD 32位標(biāo)志出棧. 二、算術(shù)運(yùn)算指令 ADD 加法. ADC 帶進(jìn)位加法. INC 加 1. AAA 加法的ASCII碼調(diào)整. DAA 加法的十進(jìn)制調(diào)整. SUB 減法. SBB 帶借位減法. DEC 減 1. NEC 求反(以 0 減之). CMP 比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果). AAS 減法的ASCII碼調(diào)整. DAS 減法的十進(jìn)制調(diào)整. MUL 無符號(hào)乘法. IMUL 整數(shù)乘法. 以上兩條,
40、結(jié)果回送AH和AL(字節(jié)運(yùn)算),或DX和AX(字運(yùn)算), AAM 乘法的ASCII碼調(diào)整. DIV 無符號(hào)除法. IDIV 整數(shù)除法. 以上兩條,結(jié)果回送: 商回送AL,余數(shù)回送AH, (字節(jié)運(yùn)算); 或 商回送AX,余數(shù)回送DX, (字運(yùn)算). AAD 除法的ASCII碼調(diào)整. CBW 字節(jié)轉(zhuǎn)換為字. (把AL中字節(jié)的符號(hào)擴(kuò)展到AH中去) CWD 字轉(zhuǎn)換為雙字. (把AX中的字的符號(hào)擴(kuò)展到DX中去) CWDE 字轉(zhuǎn)換為雙字. (把AX中的字符號(hào)擴(kuò)展到EAX中去) CDQ 雙字?jǐn)U展. (把EAX中的字的符號(hào)擴(kuò)展到EDX中去) 三、邏輯運(yùn)算指令 AND 與運(yùn)算. OR 或運(yùn)算. XOR 異或運(yùn)算
41、. NOT 取反. TEST 測(cè)試.(兩操作數(shù)作與運(yùn)算,僅修改標(biāo)志位,不回送結(jié)果). SHL 邏輯左移. SAL 算術(shù)左移.(=SHL) SHR 邏輯右移. SAR 算術(shù)右移.(=SHR) ROL 循環(huán)左移. ROR 循環(huán)右移. RCL 通過進(jìn)位的循環(huán)左移. RCR 通過進(jìn)位的循環(huán)右移. 以上八種移位指令,其移位次數(shù)可達(dá)255次. 移位一次時(shí), 可直接用操作碼. 如 SHL AX,1. 移位>1次時(shí), 則由寄存器CL給出移位次數(shù). 如 MOV CL,04 SHL AX,CL 四、串指令 DS:SI 源串段寄存器 :源串變址. ES:DI 目標(biāo)串段寄存器:目標(biāo)串變址. CX 重復(fù)次數(shù)計(jì)數(shù)器. AL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度出租車副班司機(jī)雇傭合同樣本4篇
- 2025年度農(nóng)用機(jī)械租賃行業(yè)規(guī)范與標(biāo)準(zhǔn)制定合同4篇
- 2025年南京市房產(chǎn)局審核的房屋抵押貸款合同修訂版4篇
- 2025年度墓地轉(zhuǎn)賣及墓園墓碑雕刻升級(jí)合同4篇
- 2025年度個(gè)人房產(chǎn)測(cè)繪服務(wù)合同模板2篇
- 2025年度個(gè)人品牌形象設(shè)計(jì)師雇傭合同3篇
- 2025年度車輛運(yùn)輸合同運(yùn)輸效率提升措施4篇
- 二零二五版綠色建材認(rèn)證木方、木跳板買賣合同3篇
- 2025年高速公路車輛通行費(fèi)收取服務(wù)合同4篇
- 2025年度寵物殯葬服務(wù)及禮儀合同4篇
- 2024年合肥市廬陽區(qū)中考二模英語試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
- 《心態(tài)與思維模式》課件
- C語言程序設(shè)計(jì)(慕課版 第2版)PPT完整全套教學(xué)課件
- 行業(yè)會(huì)計(jì)比較(第三版)PPT完整全套教學(xué)課件
- 高考英語語法填空專項(xiàng)訓(xùn)練(含解析)
- 危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
- 《美的歷程》導(dǎo)讀課件
評(píng)論
0/150
提交評(píng)論