![惠州學院2015匯編語言復習_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/4e580dcd-b321-4114-a541-ebe5a5f3b925/4e580dcd-b321-4114-a541-ebe5a5f3b9251.gif)
![惠州學院2015匯編語言復習_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/4e580dcd-b321-4114-a541-ebe5a5f3b925/4e580dcd-b321-4114-a541-ebe5a5f3b9252.gif)
![惠州學院2015匯編語言復習_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/4e580dcd-b321-4114-a541-ebe5a5f3b925/4e580dcd-b321-4114-a541-ebe5a5f3b9253.gif)
![惠州學院2015匯編語言復習_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/4e580dcd-b321-4114-a541-ebe5a5f3b925/4e580dcd-b321-4114-a541-ebe5a5f3b9254.gif)
![惠州學院2015匯編語言復習_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/11/4e580dcd-b321-4114-a541-ebe5a5f3b925/4e580dcd-b321-4114-a541-ebe5a5f3b9255.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、匯編語言(教材 王爽)期末考試復習:考試題型:選擇、填空、程序分析、編程題一、 重點復習課本的檢測點1.1-3.2與課后實驗1-14:二、 需要掌握的指令見后面附錄三、 匯編語言主要知識點:寄存器與存儲器1. 寄存器功能. 寄存器的一般用途和專用用途. CS:IP 控制程序執(zhí)行流程. SS:SP 提供堆棧棧頂單元地址. DS:BX(SI,DI) 提供數(shù)據(jù)段內單元地址. SS:BP 提供堆棧內單元地址. ES:BX(SI,DI) 提供附加段內單元地址. AX,CX,BX和CX寄存器多用于運算和暫存中間計算結果,但又專用于某些指令(查閱 指令表)。. PSW程序狀態(tài)字寄存器只能通過專用指令(LAH
2、F, SAHF)和堆棧(PUSHF,POPF)進行存取。2. 存儲器分段管理. 解決了16位寄存器構成20位地址的問題. 便于程序重定位. 20位物理地址=段地址 * 16 + 偏移地址. 程序分段組織: 一般由代碼段,堆棧段,數(shù)據(jù)段和附加段組成,不設置堆棧段時 則使用系統(tǒng)內部的堆棧。3. 堆棧. 堆棧是一種先進后出的數(shù)據(jù)結構 , 數(shù)據(jù)的存取在棧頂進行 , 數(shù)據(jù)入棧使堆棧向地址減小的方向擴展。. 堆棧常用于保存子程序調用和中斷響應時的斷點以及暫存數(shù)據(jù)或中間計算結果 。. 堆??偸且宰譃閱挝淮嫒≈噶钕到y(tǒng)與尋址方式1. 指令系統(tǒng). 計算機提供給用戶使用的機器指令集稱為指令系統(tǒng),大多數(shù)指令為雙操作數(shù)
3、指令。執(zhí)行指令后,一般源操作數(shù)不變,目的操作數(shù)被計算結果替代。. 機器指令由CPU執(zhí)行,完成某種運算或操作,8086/8088指令系統(tǒng)中的指令分為6類: 數(shù)據(jù)傳送,算術運算,邏輯運算,串操作,控制轉移和處理機控制。2. 尋址方式. 尋址方式確定執(zhí)行指令時獲得操作數(shù)地址的方法. 分為與數(shù)據(jù)有關的尋址方式(7種)和與轉移地址有關的尋址方式(4)種。. 與數(shù)據(jù)有關的尋址方式的一般用途:(1) 立即數(shù)尋址方式-將常量賦給寄存器或存儲單元(2) 直接尋址方式-存取單個變量(3) 寄存器尋址方式-訪問寄存器的速度快于訪問存儲單元的速度(4) 寄存器間接尋址方式-訪問數(shù)組元素(5) 變址尋址方式(6) 基址
4、變址尋址方式(7) 相對基址變址尋址方式(5),(6),(7)都便于處理數(shù)組元素. 與數(shù)據(jù)有關的尋址方式中,提供地址的寄存器只能是BX,SI,DI或BP. 與轉移地址有關的尋址方式的一般用途:(1) 段內直接尋址-段內直接轉移或子程序調用(2) 段內間接尋址-段內間接轉移或子程序調用(3) 段間直接尋址-段間直接轉移或子程序調用(4) 段間間接尋址-段間間接轉移或子程序調用匯編程序和匯編語言1. 匯編程序. 匯編程序是將匯編語言源程序翻譯成二進制代碼程序的語言處理程序,翻譯的過程稱為匯編。2. 匯編語言. 匯編語言是用指令助記符,各種標識變量,地址,過程等的標識符書寫程序的語言, 匯編語言指令
5、與機器指令一 一對應。. 偽指令,宏指令不是由CPU執(zhí)行的指令,而是由匯編程序在匯編期間處理的指令。. 偽指令指示匯編程序如何完成數(shù)據(jù)定義,存儲空間分配,組織段等工作。. 宏指令可簡化程序并減少程序書寫量。. 條件匯編偽指令的功能是確定是否匯編某段源程序,而不是實現(xiàn)程序分支,對未匯編的程序將不產(chǎn)生相應的目標代碼。. 結構作為一種數(shù)據(jù)結構可將一組類型不同但有邏輯關聯(lián)的數(shù)據(jù)組織在一起,便于 整體處理數(shù)據(jù)。. 記錄可用于提高存儲單元的利用率,將若干不足一個字節(jié)或字且有邏輯關聯(lián)的信 息壓縮存放在一個字節(jié)或字中。. 指令中的表達式在匯編期間計算,并且只能對常量或地址進行計算。程序設計基礎1. 分支程序設
6、計. 程序分支由條件轉移指令或無條件轉移指令實現(xiàn). 存放若干目的轉移地址或跳轉指令的跳轉表常用于實現(xiàn)多路分支. 條件轉移指令只能實現(xiàn)偏移量為-128至+127字節(jié)范圍的轉移. 無條件轉移指令根據(jù)尋址方式可實現(xiàn)短轉移(偏移量為-128至+127字節(jié)),段內轉 移,段間轉移。2. 循環(huán)程序設計. 可由循環(huán)控制指令或條件轉移指令組織循環(huán)結構. 內層循環(huán)結構必須完全包含在外層循環(huán)結構內,并不能發(fā)生從循環(huán)結構外向循環(huán) 結構內的轉移。3. 子程序設計. 子程序中應保護寄存器內容,并正確使用堆棧, 成對執(zhí)行PUSH和POP指令,保證執(zhí)行RET指令時堆棧棧頂為返回地址。. 主程序可通過寄存器,參數(shù)表,或堆棧傳
7、遞參數(shù)給子程序 4. EXE文件和COM文件. 二者都是可執(zhí)行文件. COM文件源程序的特點是: 第一條可執(zhí)行指令的起始存放地址必須是100H,不能分段,不用定義堆棧,所有過程為NEAR類型,直接用INT 20H 指令返回DOS。5. DOS功能調用與BIOS中斷調用. 二者都是完成DOS系統(tǒng)提供給用戶的輸入/輸出等常用功能,通過執(zhí)行軟中斷指令 完成一次軟中斷服務。. DOS功能調用的中斷服務程序是操作系統(tǒng)的一部分,存于RAM中; 而BIOS中斷調用的中斷服務程序存放在ROM中。輸入/輸出與中斷系統(tǒng)1. 輸入/輸出的方式. 程序直接I/O方式: 用IN和OUT指令直接在端口級上進行I/O操作,
8、數(shù)據(jù)傳送方式 分為無條件傳送方式和查詢傳送方式。. 中斷傳送方式: 由CPU響應中斷請求完成中斷服務。. DMA傳送方式: 直接在存儲器與外設之間傳送數(shù)據(jù)。2. 有關中斷的概念. 中斷、中斷源、中斷請求、中斷服務、中斷向量、中斷向量表、中斷響應過程、中斷指令、開中斷、關中斷、內部中斷、外部中斷、可屏蔽中斷、非屏蔽中斷。四、程序編寫及程序分析填空類的題目:(主要是書中的實驗)1、 編程,向內存0:2000:23f依次傳遞數(shù)據(jù)063(3fh),程序中只能使用9條指令,9條指中包括“mov ax,4c00h”和“int 21h”。以及實驗4的第3小題 將指令復制到0:200處2、 編程,將datas
9、g段中每個單詞的前4個字母改寫為大寫字母。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、 編程:在屏幕中間分別顯示綠色、綠底紅色、白底藍色的字符串'welcome to masm!'。4、 編寫子程序:顯示字符串;名稱:sho
10、w_str;功能:在屏幕的指定位置,用指定顏色,顯示一個用0結尾的字符串;參數(shù):(dh)=行號,(dl)=列號(取值范圍080),(cl)=顏色,ds:si:該字符串的首地址;返回:顯示在屏幕上5、 編寫子程序:.解決除法溢出問題;名稱:divdw;功能:除法,被除數(shù)32位,除數(shù)16位,商32位,余數(shù)16位,不會溢出;參數(shù):(dx)=被除數(shù)高16位,(ax)=被除數(shù)低16位,(cx)=除數(shù);返回:(dx)=商高16位,(ax)=商低16位,(cx)=余數(shù)6、 數(shù)值顯示;名稱:dtoc_word;功能:將一個word型數(shù)轉化為字符串;參數(shù):(ax)=word型的數(shù)據(jù),ds:si指向字符串的首地址
11、;返回:ds:si放此字符串,以0結尾7、 編寫子程序;名稱:letterc;功能:將以0結尾的字符串中的小寫字母轉變成大寫字母;參數(shù):ds:si開始存放的字符串;返回:ds:si開始存放的字符串8、 編寫0號中斷的處理程序編寫0號中斷的處理程序,使得在除法溢出發(fā)生時,在屏幕中間顯示字符串“divide error!”,然后返回到DOS。五、參考習題1什么是堆棧操作?以下關于堆棧操作的指令執(zhí)行后,SP的值是多少?PUSH AXPUSH CXPUSH DXPOP AXPUSH BXPOP CXPOP DX堆棧被定義為一種先進后出的數(shù)據(jù)結構,即最后進棧的元素將被最先彈出來。堆棧從一個稱為棧底的位置
12、開始,數(shù)據(jù)進入堆棧的操作稱為壓入(或壓棧),數(shù)據(jù)退出堆棧的操作稱為彈出,每進行一次彈出操作,堆棧就減少一個元素,最后一次壓入的元素,稱為棧頂元素,壓入彈出操作都是對棧頂元素進行的堆棧的兩種基本的操作。在進行以上一系列堆棧操作后,SP指針的值是原SP-2。2用匯編語言指令實現(xiàn)以下操作。(1) 將寄存器AX、BX和DX的內容相加,和放在寄存器DX中。ADD AX,BXADD DX,AX(2) 用基址變址尋址方式(BX和SI)實現(xiàn)AL寄存器的內容和存儲器單元BUF中的一個字節(jié)相加的操作,和放到AL中。ADD AL,BYTE PTR BXSI(3) 用寄存器BX實現(xiàn)寄存器相對尋址方式(位移量為100H
13、),將DX的內容和存儲單元中的一個字相加,和放到存儲單元中。ADD 100HBX,DX(4) 用直接尋址方式(地址為0500H)實現(xiàn)將存儲器中的一個字與立即數(shù)3ABCH相加,和放回該存儲單元中。ADD 0500H,3ABCH(5) 用串操作指令實現(xiàn)將內存定義好的兩個字節(jié)串BUF1和BUF2相加后,存放到另一個串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 ;寄存器尋址、寄存器相對尋址(2) MOV AX,2030H ;寄存器尋址、立即尋址(3) SCASB ;隱含操作數(shù)為寄存器尋址和寄存器間接尋址(4) IN AL,40H ;寄存器尋址、立即尋址(5) MOV DI+BX,AX ;基址加變址尋址、寄存器尋址(6) ADD AX,50HDI ;寄存器尋址、寄存器相對尋址(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寄存器的內容。(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判斷下列指令是否有錯,如果有錯,說明理由。(1) SUB
16、BL,BX ;兩個操作數(shù)的寬度不一樣(2) MOV BYTE PTRBX,3456H ;將16位的立即數(shù)傳送到一個字節(jié)的內存單元(3) SHL AX,CH ;移位指令的移位位數(shù)用CL給出,不能用CH。(4) MOV AH,SIDI ;不能用兩個變址寄存器來實現(xiàn)尋址操作(5) SHR AX,4 ;只有當移位位數(shù)為1時,才能用立即數(shù)表達(6) MOV CS,BX ;不能對CS實現(xiàn)傳送操作(7) MOV 125,CL ;立即數(shù)不能做目的操作數(shù)(8) MOV AX,BYTE PTRSI ;源操作數(shù)限定為字節(jié),與目的操作數(shù)寬度不一致(9) MOV DI,SI ;兩個操作數(shù)不能同時為內存數(shù)6設(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 寄存器相對尋址,物理地址為: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寄存器的內容傳送到AX寄存器中;MOV AX,BX 將BX寄存器所指的內存單元的內容送AX寄存器中。(3) SUB BX,CX BX寄存器內容減去CX寄存器的內容,結果送回到BX;CMP BX,CX BX內容減去CX內容,但結果不送回,而根據(jù)標志位的情況做進一步的動作。(4) AND AL,01H AL內容與01H相“與”,結果為“0000000x”送回AL寄存器;TEST AL,01
19、H AL內容與01H相“與”,結果為“0000000x”不送回AL寄存器,而根據(jù)標志位(ZF)情況做進一步的動作。(5) JMP NEAR PTR NEXT NEXT所指指令在當前指令的同段內(16位地址范圍);JMP SHORT NEXT NEXT所指指令在當前指令的8位地址范圍內。(6) ROL AX,CL 循環(huán)左移,進位標志位不參與循環(huán);RCL AX,CL 循環(huán)左移,進位標志位參與循環(huán)。(7) PUSH AX 將AX內容存入棧頂指針處,即進棧操作;POP AX 將棧頂內容彈出裝入AX寄存器中,即出棧操作。8 試分析以下程序段執(zhí)行完后BX的內容為何?MOV BX,1030HMOV CL,3
20、SHL BX,CLDEC BX程序執(zhí)行完后,BX=817FH,執(zhí)行過程如下。9、在BUF1變量中依次存儲了5個字數(shù)據(jù),接著定義了一個名為BUF2的字單元,表示如下:BUF1 DW 8765H,6CH,0,1AB5H,47EAHBUF2 DW ?(1) 設BX中是BUF1的首地址,請編寫指令將數(shù)據(jù)50H傳送給BUF2單元。ADD BX,10MOV WORD PTRBX,50H(2) 請編寫指令將數(shù)據(jù)FFH傳送給數(shù)據(jù)為0的單元。ADD BX,4MOV WORD PTRBX,F(xiàn)FH10、下面是一個數(shù)據(jù)段的定義,請用圖表示它們在內存中存放的形式。DATA SEGMENTA1 DB 25H,35H,45
21、HA2 DB 3 DUP(5)A3 DW 200,3AB6HA4 DW 3000H,6A6FHDATA ENDSA125H35H45HA205H05H05HA300H02HB6H3AHA400H30H6FH6AH11、說明下列語句所分配的存儲空間及初始化的數(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ù)傳送程序段中有些使用不當?shù)恼Z句,請改正之。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、有一個數(shù)據(jù)段定義了如下6個變量,請寫出該數(shù)據(jù)段。(1)BUF1為十進制數(shù)字節(jié)變量:64;(2)BUF2為字符串變量:Teacher;(3)BUF3為十六進制數(shù)字節(jié)變量:2FH;(4)BUF4為雙字變量:657AH;(5)BUF5為字變量:657AH;(6)BUF6為二進制數(shù)字節(jié)變量:10101101B。DATA SEGMENT BUF1 DB 64BUF2 DB TeacherBUF3 DB 2FHBUF4 DD 657AHBUF5 DW 657AHBUF6 DB 10101101B14以下為用段基址:偏移量形式表示的內存地址,試計算它
24、們的物理地址。 12F8:0100 1A2F:0103 1A3F:0003 1A3F:A1FF15 自12FA:0000開始的內存單元中存放以下數(shù)據(jù)(用十六進制形式表示):03 06 11 A3 13 01,試分別寫出12FA:0002的字節(jié)型數(shù)據(jù)、字型數(shù)據(jù)及雙字型數(shù)據(jù)的值。16分別指出下列指令中源操作數(shù)和目標操作數(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)中,設(DS)1000H,(ES)2000H
25、,(SS)1200H,(BX)0300H,(SI)0200H,(BP)0100H,VAR的偏移量為0060H,若目標操作數(shù)為存儲器操作數(shù),請計算目標操作數(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 指出下列指令的錯誤: 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ù)存放著兩個字型數(shù)據(jù),編程序求它們的和,并把結果存放在這兩個數(shù)據(jù)之后。21 寫出把首址為BUF的字型數(shù)組的第4個字送到AX寄存器的指令,要求使用以下幾種尋址方式: 直接尋址方式 使用BX的寄存器間接尋址方式 使用BX的寄存器相對尋址方式22 設(DS)1000H,(BX)0300H,(SI)0002H,(DI)0100H,自1000:030
27、0單元開始存有以下數(shù)據(jù)(用十六進制形式表示):12 34 56 78 90 AB CD EF,試說明下列各條指令執(zhí)行后目標操作數(shù)的內容。 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指令測試AL寄存器的位0和位6是否同時為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 對于第12題,若N1的地址為1470:0000,其后的變量依次連續(xù)存放,試給出各變量的偏移量。N7N9變量的值是多少?14 如果定義了如第12題所示的變量,下列指令執(zhí)行的結果是什么(若語句正確,則給出執(zhí)行結果;若不正確,說明錯誤原因)? 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ù)據(jù)定義語句: M1 DB 10 M2 DW 2345H M3 DD 987865H試寫出匯編程序對這些語句匯編后所生成的值(例如M2單元、M21單元的內容)。 27 有以下程序片段,試問匯編后符號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寄存器中的內容,29. 指出下列指令中哪些是錯誤的,并指出錯在何處? MOV DL,DX MOV ES,2000H SUB BX,SI ADD AX,BX+CX XCHG DS,2400H DEC 15H IN AL,DX OUT 300H,AX 解答 錯,DX不能作為間接尋址的寄存器。 錯,立即數(shù)不能直接送給段寄存器。
31、; 錯,兩個存儲單元間內容不能直接相減。 錯,CX寄存器不能作為變址寄存器。 錯,不允許段寄存器與存儲單元內容進行交換 錯,減1指令不能對段寄存器直接操作 對 錯,輸出指令的地址若是16位,必須用DX間址。 30. 下列程序段執(zhí)行后 AX=?設數(shù)據(jù)段有: TABLE DW 100,200,300,400
32、; ENTRY DW 3代碼段 對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、堆棧中各單元的內容。解答: SS=1000H SP=1FFEH CX=2115H DX=5678H 棧中各單元內容如下所示: 地址RAM11FFAH211511FFCH567811FFEH123412000H
35、; 32、讀下列程序段:寫出; (1)每條指令連續(xù)執(zhí)行后,哪些寄存器發(fā)生變化?內容是什么? (2)程序段執(zhí)行完后,BX寄存器的肉容是什么? MOV BX,3F93H MOV CL ,4 ADD BX ,CL MOV AL ,BL AND AL ,0FH 0R AL ,30H六 附錄:匯編指令紅色為需要掌握的匯編指令:一、數(shù)據(jù)傳輸指令 它們在存貯器和寄存器、寄存器和輸入輸出端口之間傳送數(shù)據(jù). 1. 通用數(shù)據(jù)傳送指令. MOV 傳送字或字節(jié). MOVSX 先符號擴展,再傳送. MOVZX 先零擴展,再傳送. 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é).( 至少有一個操作數(shù)為寄存器,段寄存器不可作為操作數(shù)) CMPXCHG 比較并交換操作數(shù).( 第二個操作數(shù)必須為累加器AL/AX/EAX ) XADD 先交換再累加.(
37、 結果在第一個操作數(shù)里 ) XLAT 字節(jié)查表轉換. BX 指向一張 256 字節(jié)的表的起點, AL 為表的索引值 (0-255,即0-FFH); 返回 AL 為查表結果. ( BX+AL->AL ) 2. 輸入輸出端口傳送指令. IN I/O端口輸入. ( 語法: IN 累加器, 端口號DX ) OUT I/O端口輸出. ( 語法: OUT 端口號DX,累加器 ) 輸入輸出端口由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指定時, 其范圍是 0-65535. 3. 目的地址傳送指令. LEA 裝入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS
38、 傳送目標指針,把指針內容裝入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 傳送目標指針,把指針內容裝入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 傳送目標指針,把指針內容裝入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 傳送目標指針,把指針內容裝入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 傳送目標指針,把指針內容裝入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 標志傳送指令. LA
39、HF 標志寄存器傳送,把標志裝入AH. SAHF 標志寄存器傳送,把AH內容裝入標志寄存器. PUSHF 標志入棧. POPF 標志出棧. PUSHD 32位標志入棧. POPD 32位標志出棧. 二、算術運算指令 ADD 加法. ADC 帶進位加法. INC 加 1. AAA 加法的ASCII碼調整. DAA 加法的十進制調整. SUB 減法. SBB 帶借位減法. DEC 減 1. NEC 求反(以 0 減之). CMP 比較.(兩操作數(shù)作減法,僅修改標志位,不回送結果). AAS 減法的ASCII碼調整. DAS 減法的十進制調整. MUL 無符號乘法. IMUL 整數(shù)乘法. 以上兩條,
40、結果回送AH和AL(字節(jié)運算),或DX和AX(字運算), AAM 乘法的ASCII碼調整. DIV 無符號除法. IDIV 整數(shù)除法. 以上兩條,結果回送: 商回送AL,余數(shù)回送AH, (字節(jié)運算); 或 商回送AX,余數(shù)回送DX, (字運算). AAD 除法的ASCII碼調整. CBW 字節(jié)轉換為字. (把AL中字節(jié)的符號擴展到AH中去) CWD 字轉換為雙字. (把AX中的字的符號擴展到DX中去) CWDE 字轉換為雙字. (把AX中的字符號擴展到EAX中去) CDQ 雙字擴展. (把EAX中的字的符號擴展到EDX中去) 三、邏輯運算指令 AND 與運算. OR 或運算. XOR 異或運算
41、. NOT 取反. TEST 測試.(兩操作數(shù)作與運算,僅修改標志位,不回送結果). SHL 邏輯左移. SAL 算術左移.(=SHL) SHR 邏輯右移. SAR 算術右移.(=SHR) ROL 循環(huán)左移. ROR 循環(huán)右移. RCL 通過進位的循環(huán)左移. RCR 通過進位的循環(huán)右移. 以上八種移位指令,其移位次數(shù)可達255次. 移位一次時, 可直接用操作碼. 如 SHL AX,1. 移位>1次時, 則由寄存器CL給出移位次數(shù). 如 MOV CL,04 SHL AX,CL 四、串指令 DS:SI 源串段寄存器 :源串變址. ES:DI 目標串段寄存器:目標串變址. CX 重復次數(shù)計數(shù)器. AL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河源道路運輸從業(yè)資格考試系統(tǒng)
- 2024-2025學年新教材高中語文第六單元課時優(yōu)案5拿來主義習題含解析新人教版必修上冊
- 光學實驗室建設方案
- 華師大版數(shù)學八年級下冊《平面直角坐標系》聽評課記錄
- 高中老師工作總結
- 個人培訓研修計劃
- 實驗教學聽評課記錄
- 餐飲合伙人合同范本
- 應急照明施工合同范本
- 華中農(nóng)業(yè)大學《礦井熱害防治》2023-2024學年第二學期期末試卷
- 【義務教育階段學困生研究國內外文獻綜述3600字】
- 英語完形填空練習題
- GB/T 10095.1-2022圓柱齒輪ISO齒面公差分級制第1部分:齒面偏差的定義和允許值
- 仁愛英語九年級下冊單詞表(中英文)
- 建設工程施工合同糾紛處理課件
- 標準太陽能光譜數(shù)據(jù)
- 小學校長新學期工作思路3篇
- 四年級下冊數(shù)學應用題專項練習
- 煤礦安全生產(chǎn)事故風險辨識評估和應急資源調查報告
- 建筑結構課程設計說明書實例完整版(本)
- 橋梁橋臺施工技術交底(三級)
評論
0/150
提交評論