


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章1. 分別說明下列指令的源操作數(shù)和目的操作數(shù)各采用什么尋址方式。( 1) MOV AX ,2408H (2) MOV CL ,0FFH (3) MOV BX ,SI( 4) MOV 5BX ,BL (5) MOV BP+100H ,AX (6) MOV BX+DI ,' $'( 7) MOV DX ,ES:BX+SI (8)MOV VALBP+DI ,DX(9)IN AL ,05H (10)MOV DS,AX答:( 1)立即數(shù),寄存器 ( 2)立即數(shù),寄存器 (3)寄存器間接,寄存器( 4)寄存器,寄存器相對 ( 5)寄存器,寄存器相對 (6)立即數(shù),基址變址( 7)基址
2、變址,寄存器 (8)寄存器,相對基址變址( 9)直接端口尋址,寄存器 (10)寄存器,寄存器2. 已知:DS=1000H, BX=0200H , SI=02H,內(nèi)存 10200H10205H 單元的內(nèi)容分別為 10H, 2AH, 3CH, 46H, 59H, 6B H 。下列每條指令執(zhí)行完后 AX 寄存器的內(nèi)容各是什么?(1)MOV AX , 0200H (2)MOV AX , 200H ( 3) MOV AX , BX( 4) MOV AX , 3BX ( 5)MOV AX , BX+SI ( 6)MOV AX , 2BX+SI答:( 1)0200H (2)2A10H (3)0200H( 4
3、) 5946H (5)463CH (6)6B59H3. 設(shè) DS=1000H, ES=2000H, SS=3500H, SI=00A0H, DI=0024H , BX=0100H, BP=0200H, 數(shù)據(jù)段中變量名為 VAL的偏移地址值為0030H,試說明下列源操作數(shù)字段的尋址方式是什 么?物理地址值是多少?(1)MOV AX , 100H (2)MOV AX , VAL (3)MOV AX, BX(4)MOV AX , ES: BX (5)MOV AX , SI (6)MOV AX , BX+10H(7)MOV AX , BP (8)MOV AX , VALBPSI(9)MOV AX ,
4、VALBXDI (10)MOV AX , BPDI答:( 1)直接, 10100H (2)直接, 10030H (3)寄存器間接 ,10100H(4)寄存器間接, 20100H (5)寄存器間接 ,100A0H (6)寄存器相對, 10110H ( 7)寄存器間接, 35200H ( 8)相對基址變址, 352D0H( 9)相對基址變址, 10154H (10)基址變址, 35224H4. 寫出下列指令的機器碼(1)MOV AL , CL (2)MOV DX , CX (3)MOV BX+100H , 3150H 答:( 1)10001010 11000001B(2)10001011 1101
5、0001B(3)11000111 10000111 00000000 00000001 01010000 00110001B5. 已知程序的數(shù)據(jù)段為:DATA SEGMENTA DB $ ' ,10HB DB COMPUTER'C DW 1234H, 0FFHD DB 5 DUP(?)E DD 1200459AHDATA ENDS求下列程序段執(zhí)行后的結(jié)果是什么。MOV AL, AMOV DX, CXCHG DL, AMOV BX, OFFSET BMOV CX, 3BXLEA BX, DLDS SI, ELES DI, E答: MOV AL, A AL=24HMOV DX, C
6、 DX=1234HXCHG DL, A DL=24H, A=34HMOV BX, OFFSET B BX=2MOV CX, 3BX CX=5550HLEA BX, D BX=000EHLDS SI, E DS=1200H, SI=459AHLES DI, E ES=1200H, DI=459AH6. 指出下列指令中哪些是錯誤的,錯在什么地方。(1)MOV DL ,AX (2)MOV 8650H ,AX (3)MOV DS,0200H(4)MOV BX , 1200H (5)MOV IP ,0FFH (6) MOV BX+SI+3 , IP(7)MOV AX ,BXBP ( 8)MOV AL ,
7、ES:BP (9) MOV DL , SIDI(10)MOV AX , OFFSET 0A20H ( 11) MOV AL, OFFSET TABLE(12)XCHG AL ,50H (13)IN BL ,05H ( 14)OUT AL , 0FFEH答:( 1)長度不匹配 ( 2)立即數(shù)不能做目的操作數(shù)( 3)段寄存器不能用立即數(shù)賦值( 4)兩個內(nèi)存單元不能直接傳送數(shù)據(jù)(5)IP 不能用指令直接修改 ( 6)指令中不能出現(xiàn) IP(7) BX/BP 應(yīng)與 SI/DI 搭配 (8)正確(9)SI/DI 應(yīng)與 BX/BP 搭配 ( 10)OFFSET 后應(yīng)跟 內(nèi)存單元(11)偏移地址為 16 位,
8、 AL 長度不夠 (12)立即數(shù) 不能用于 XCHG(13) IN 必須用 AL/AX ( 14)操作數(shù)順序反向;地 址應(yīng)為 8 位7. 已知當(dāng)前數(shù)據(jù)段中有一個十進制數(shù)字09的7段代碼表,其數(shù)值依次為 40H,79H, 24H,30H , 19H , 12H , 02H , 78H , 00H , 18H。要求用 XLAT 指令將十進制數(shù) 57 轉(zhuǎn)換成相應(yīng)的7 段代碼值,存到 BX 寄存器中,試寫出相應(yīng)的程序段。 答: DATA SEGMENTTABLE DB 40H , 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 18HDATA ENDSMOV AL ,
9、5 MOV BX , OFFSET TABLEXLAT TABLEMOV CL , ALMOV AL , 7XLAT TABLEMOV BL , ALMOV BH , CL8. 已 知 當(dāng) 前 SS=1050H, SP=0100H, AX=4860H , BX=1287H ,試用示意圖表示執(zhí)行下列指令過程中,堆棧中的內(nèi)容和堆棧指針 SP 是怎樣變化 的。PUSH AXPUSH BXPOP BXPOP AXWl楷爭眥詐欷C 2 ) rt.1? PUSH AX 后1Q500H87H44LH(1)指9. 下列指令完成什么功能?(1) ADD AL , DH (2) ADC BX , CX (3) S
10、UB AX , 2710H(4) DEC BX ( 5) NEG CX (6) INC BL(7) MUL BX ( 8) DIV CL答:(1) AL+DH AL (2) BX+CX+CF BX (3) AX-2710H AX(4) BX-1 BX ( 5) 0-CXCX (6) BL+1BL(7) AX*BX DX , AX ( 8) AX/CL 商AL ,余數(shù)AH10. 已知 AX=2508H , BX=0F36H , CX=0004H ,DX=1864H,求下列每條指令執(zhí)行后的結(jié)果 是什么?標(biāo)志位 CF 等于什么?(1)AND AH ,CL (2)OR BL ,30H (3)NOT A
11、X(4)XOR CX ,0FFF0H (5)TEST DH ,0FH (6) CMP CX ,00H(7)SHR DX,CL ( 8) SAR AL,1 (9)SHL BH , CL(10)SAL AX,1 (11)RCL BX,1 ( 12) ROR DX , CL答:( 1)AX=0408H , CF=0 (2)BX=0F36H ,CF=0 ( 3)AX=0DAF7H ,CF 不變 ( 4)CX=0FFF4H ,CF=0 (5)DX=01864H ,CF=0 (6)CX=0004H ,CF=0 (7) DX=0186H ,CF=0 (8)AX=2504H , CF=0 (9) BX=0F0
12、36H ,CF=0 ( 10) AX=4A10H ,CF=0(11)BX=1E6C/1E6DH ,CF=0 ( 12)DX=4186H , CF=011. 假設(shè)數(shù)據(jù)段定義如下:DATA SEGMENTSTRING DB The Personal Computer & TV'DATA ENDS 試用字符串操作等指令編程完成以下功能: ( 1)把該字符串傳送到附加段中偏移量為GET_CHAR開始的內(nèi)存單元中。( 2)比較該字符串是否與'TChoemputer '相同,若相同則將 AL 寄存器的內(nèi)容置 1,否則置0。并要求將比較次數(shù)送到 BL 寄存器中。( 3)檢查該
13、字符串是否有'&',若有則用空格字符將其替換。( 4)把字符串大寫字母傳送到附加段中以CAPS 開始的單元中,其余字符傳到以 CHART開始的單元中。 然后將數(shù)據(jù)段中存儲上述字符串的單元 清 0 。答:( 1) CLDLEA SI,STRINGLEA DI,GET_CHARMOV CX,26REP MOVSB( 2)補充在附加段定義STRING1 DB The computer 'MOV AL,1CLDLEA SI,STRINGLEA DI,STRING1MOV CX,12REPZ CMPSBJZ SKIPMOV AL,0SKIP: MOV BX,12SUB B
14、X,CX(3) MOV AX, DATAMOV ES, AXCLDMOV AL,'&'LEA DI,STRINGMOV CX,26NEXT: REPNE SCASBJZ FINDJMP EXITFIND: MOV BYTE PTR DI-1, ' 'JCXZ EXITJMP NEXTEXIT:(4) LEA SI,STRINGLEA DI,CAPSLEA BX,CHARTMOV CX,26NEXT: MOV AL, SICMP AL, ' A'JB OTHERCMP AL, ' Z'JA OTHERMOV ES:DI,AL
15、INC DIJMP SKIPOTHER: MOV ES:BX,ALINC BXSKIP: MOV BYTE PTRSI,0INC SILOOP NEXT12. 編程將 AX 寄存器中的內(nèi)容以相反的順序傳送到 DX 寄存器中,并要求 AX 中的內(nèi)容不 被破壞,然后統(tǒng)計 DX 寄存器中 1'的個數(shù)是多少。答: MOV BL,0PUSH AXMOV DX,0MOV CX,16NEXT: SHL AX,1JNC SKIPINC BLSKIP: RCR DX,1LOOP NEXTSTOP: POP AX13. 設(shè) CS=1200H, IP=0100H ,SS=5000H, SP=0400H, D
16、S=2000H , SI=3000H, BX=0300H , ( 20300H) =4800H ,( 20302H)=00FFH, TABLE=0500H ,PROG_N 標(biāo)號的地址為 1200: 0278H,PROG_F 標(biāo)號的地址為 3400H:0ABCH 。說明下列每條指令執(zhí)行完后,程序?qū)⒎謩e 轉(zhuǎn)移到何處執(zhí)行?( 1) JMP PROG_N( 2) JMP BX( 3) JMP BX( 4) JMP FAR PROG_F( 5) JMP DWORD PTR BX如將上述指令中的操作碼 JMP 改成 CALL ,則每條指令執(zhí)行完后,程序轉(zhuǎn)向何處執(zhí)行?并 請畫圖說明堆棧中的內(nèi)容和堆棧指針如何
17、變化。答:(1) 1200H: 0278H(2)1200H:0300H(3)1200H:4800H(4)3400H:0ABCH(5)00FFH :4800H將操作碼JMP改成CALL 后:(1) 1200H: 0278H指令長度為 3,則IP=0100H+3=0103H,入棧井廉Mi5OSX>H=XXKUIjOOOII.MKJOHi:<-SP5<KOH=50eC£IiC3> "OOEMMOHrU7U13- 別工P=0LO如TRgJri| 4>3<»0H =tJ2> lOTOTir(5) 00FFH: 4800H指令長度為
18、2,則IP=0100H+2=0102H,入棧5000H. OOOOH50OOM; OJFEMnorwi, atfnTic訪14. 在下列程序段括號中分別填入以下指令(1)LOOP NEXT( 2) LOOPE NEXT試說明在這三種情況下,程序段執(zhí)行完后,START: MOV AX,01H(3) LOOPNE NEXTAX,BX,CX,DX 的內(nèi)容分別是什么MOV BX,02HMOV DX,03HMOV CX,04HNEXT: INC AXADD BX,AXSHR DX,1()答:(1) AX=05H BX=10H CX=0 DX=0(2)AX=02H BX=04H CX=03H DX=01H
19、(3)AX=03H BX=07H CX=02H DX=015. 某班有7個同學(xué)英語成績低于 80分,分?jǐn)?shù)存在ARRAY數(shù)組中,試編程完成以下工作:(1)給每人加 5分,結(jié)果存到 NEW 數(shù)組中(2)把總分存到 SUM單元中答: DATA SEGMENTARRAY DB ?,?,?,?,?,?,?NEW DB 7 DUPSUM DW 0DATA ENDSMOV AX , DATAMOV DS, AX(1) LEA SI,ARRAYLEA DI,NEWMOV CX,7NEXT: MOV AL , SIADD AL, 5MOV DI, ALINC SIINC DILOOP NEXT(2) LEA S
20、I , ARRAYCLCSP5000H:0000H5000H:03FCH5000H:03FEH5000H:0400HMOV CX, 7NEXT1 :MOV AL , SIMOV AH, 0ADC SUM, AXINC SILOOP NEXT116. 中斷向量表的作用是什么?它放在內(nèi)存的什么區(qū)域內(nèi)?中斷向量表中的什么地址用于 類型 3 的中斷?答:中斷向量表用來存放中斷服務(wù)程序的入口地址。 8086 的 256 類中斷的入口地址要占用1K字節(jié),位于內(nèi)存 00000H003FFH的區(qū)域內(nèi)。中斷向量表中 OOOOCHOOOOFH用于類型 3 的中斷。17. 設(shè)類型2的中斷服務(wù)程序的起始地址為0485
21、: 0016H,它在中斷向量表中如何存放?答:物理地址 內(nèi)容00008H 16H00009H 00H0000AH 85H0000BH 04H18. 若中斷向量表中地址為 0040H中存放240BH,0042H單元里存放的是 D169H,試問:(1)這些單元對應(yīng)的中斷類型是什么?(2)該中斷服務(wù)程序的起始地址是什么?答:( 1)10H(2)D169H:240BH19. 簡要說明8086響應(yīng)類型04中斷的條件是什么?答:類型 0:除法錯中斷 執(zhí)行除法指令時,若除數(shù)為 0 或所得商超過寄存器能容納的范圍,則自動產(chǎn)生類型 0 中斷。類型 1:單步中斷若 CPU 的單步標(biāo)志 TF=1 ,則每執(zhí)行完一條指
22、令后,自動產(chǎn)生類型 1 中斷。 類型 2:不可屏蔽中斷 NMI當(dāng) 8086 的 NMI 引腳上接收到由低變高的電平變化時,將自動產(chǎn)生類型 2 中斷。類型 3:斷點中斷 若在程序中某位置設(shè)置斷點,當(dāng)程序執(zhí)行到該斷點時,則產(chǎn)生類型3 中斷。類型 4:溢出中斷若溢出標(biāo)志 OF=1 ,則可由溢出中斷指令 INTO 產(chǎn)生類型 4 中斷。 第四章1. 下列變量各占多少字節(jié)?A1 DW 23H , 5876HA2 DB 3 DUP (?), 0AH, 0DH, $'A3 DD 5 DUP(1234H, 567890H)A4 DB 4 DUP(3 DUP(1, 2,' ABC' )答:
23、 A1 占 4 個字節(jié)A2 占 6 個字節(jié)A3 占 40 個字節(jié)A4 占 60 個字節(jié)2. 下列指令完成什么功能?MOV AX , 00FFH AND 1122H+3344HMOV AL , 15 GE 1111BMOV AX , 00FFH LE 255+6/5AND AL, 50 MOD 4OR AX, 0F00FH AND 1234 OR 00FFH 答:( 1)將 0066H 傳送給 AX ( 2)將 0FFH 傳送給 AL( 3)將 0FFFFH 傳送給 AX( 4) AND AL ,02H(5)OR AX ,00FFH3. 有符號定義語句如下:BUF DB 3,4,5,'
24、123 'ABUF DB 0L EQU ABUF-BUF 求 L 的值為多少? 答: L=64. 假設(shè)程序中的數(shù)據(jù)定義如下:PAR DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PAR求 PLENTH 的值為多少?表示什么意義?答:PAR的偏移地址為 0, PLENTH 當(dāng)前偏移地址$=2+16+4=22 ,$-PAR=22,故PLENTH的值為 22。若在 PLENTH 所在行有變量定義,則 $表示該變量的偏移地址,即 $表示 PLENTH 所在 行的當(dāng)前偏移地址。故 PLENTH 表示從當(dāng)前行到 PAR 之間定義的變量所占的字節(jié)個數(shù)。5.
25、 對于下面的數(shù)據(jù)定義,各條 MOV 指令執(zhí)行后,有關(guān)寄存器的內(nèi)容是什么? DA1 DB ?DA2 DW 10 DUP(?)DA3 DB ABCD'MOV AX, TYPE DA1MOV BX, SIZE DA2MOV CX, LENGTH DA3答: AX=1,BX=20,CX=16. 下段程序完成后, AH 等于什么?IN AL, 5FHTEST AL, 80HJZ L1MOV AH, 0JMP STOPL1: MOV AH, 0FFHSTOP: HLT答:討論從端口 5FH 輸入的數(shù)據(jù)最高位的情況。若最高位為1,則 AH=0 ;若最高位為 0,則 AH=0FFH 。7. 編程序完成
26、下列功能:( 1)利用中斷調(diào)用產(chǎn)生 5 秒延時。(2)利用中斷調(diào)用,在屏幕上顯示19之間隨機數(shù)。答:( 1)可以利用中斷類型 1CH 來處理,因為在系統(tǒng)時鐘的中斷處理程序中,時鐘中斷一 次要調(diào)用一次INT 1CH,即每隔55ms,產(chǎn)生一次1CH中斷,要產(chǎn)生5秒延時,只要中斷 5s/55ms=91 次即可。又因 1CH 中斷處理程序中只有一條 IRET 指令,故可將用戶的程序代 替原有的 INT 1CH 程序。DATA SEGMENTCOUNT DW 91 ; 計數(shù)器MESS DB 5 s delayed!',0AH,0DH, ' $'DATA ENDSCODE SEGM
27、ENTMAIN PROC FARASSUME CS:CODE,DS:DATA,ES:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AL,1CH ; 得到原中斷向量MOV AH,35HINT 21HPUSH ES ;存儲原中斷向量PUSH BXPUSH DSMOV DX,OFFSET DELAY ; DELAY 的偏移地址和段地址MOV AX,SEG DELAYMOV DS,AXMOV AL,1CH ;設(shè)置中斷向量MOV AH,25HINT 21HPOP DSIN AL,21H ;設(shè)置中斷屏蔽位AND AL,0FEHOUT 21
28、H,ALSTIMOV DI,2000H ;主程序延遲,在執(zhí)行此段程序期間A1: MOV SI,3000H ;產(chǎn)生中斷A2: DEC SIJNZ A2DEC DIJNZ A1POP DX ;取原中斷向量POP DSMOV AL,1CHMOV AH,25HINT 21HRETMAIN ENDPDELAY PROC NEARPUSH DSPUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXSTIDEC COUNT ;5 秒計數(shù)JNZ EXITMOV DX,OFFSET MESS ;顯示信息MOV AH,09HINT 21HMOV COUNT,91 ;5 秒的值EXIT:
29、 CLIPOP DXPOP CXPOP AXPOP DSIRETDELAY ENDPCODE ENDSEND START( 2)可以利用 INT 1AH ,讀取當(dāng)前時間的 1/100 秒為隨機數(shù)。CODE SEGMENTASSUME CS:CODESTART : MOV AH,0INT 1AH ;讀取當(dāng)前時間 CH: CL=時:分MOV AL,DL ; DH : DL= 秒: 1/100 秒MOV AH,0MOV BL,9DIV BLINC AHMOV DL,AHADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START8. 編兩個
30、通過過程完成將 AX 中存放的二進制數(shù)轉(zhuǎn)換成壓縮型 BCD 碼以及將 BCD 碼轉(zhuǎn)換 成二進制數(shù)。答:( 1)將 AX 中的二進制數(shù)先后除以 1000,100 和 10,每次除法所得的商,即是 BCD 數(shù) 的千位、百位和十位數(shù),余數(shù)是個位數(shù)。子程序名: B2TOBCD輸入?yún)?shù): AX= 十六位二進制數(shù)輸出參數(shù):CF=O,則AX=4位壓縮型BCD碼。CF=1,則要轉(zhuǎn)換的數(shù)大于 9999, AX不 變。使用寄存器:CX:存放除數(shù),DX :存放中間結(jié)果。B2TOBCD PROC FARCMP AX,9999 ; AX>9999 ,則 CF 置 1JBE TRANSTCJMP EXITTRAN:
31、 PUSH CXPUSH DXSUB DX,DX ; DX 清 0MOV CX,1000 ;計算千位數(shù)DIV CXXCHG AX,DX ;商在 DX 中,余數(shù)在 AX 中MOV CL,4SHL DX,CL ; DX 左移 4 位MOV CL,100 ;計算百位數(shù)DIV CLADD DL,AL ;百位數(shù)加到 DL 中, DX 左移 4 位MOV CL,4SHL DX,CLXCHG AL,AH ;余數(shù)保留在 AL 中SUB AH,AHMOV CL,10 ;計算十位數(shù)DIV CLADD DL,AL ;十位數(shù)加到 DL 中, DX 左移 4 位MOV CL,4SHL DX,CLADD DL,AH ;加
32、個位數(shù)MOV AX,DX ;結(jié)果送到 AX 中POP DXPOP CXEXIT: RETB2TOBCD ENDP( 2)將 AX 中 4 位 BCD 碼順序乘以 1000, 100, 10 和 1,然后求和即得。 子程序名: BCDTOB2輸入?yún)?shù): AX=4 位壓縮 BCD 碼輸出參數(shù): AX= 十六位二進制數(shù)使用寄存器:BX :暫存數(shù)據(jù),CX :存放乘數(shù),DX :存放中間結(jié)果BCDTOB2 PROC FARPUSH BXPUSH CXPUSH DXMOV BX,AXMOV CL,4ROL AX,CLAND AX,000FHMOV CX,1000 ;乘以 1000MUL CXMOV DX,A
33、XMOV AX,BXMOV CL,8ROL AX,CLAND AX,000FHMOV CL,100 ;乘以 100MUL CLADD DX,AXMOV AX,BXMOV CL,4SHR AX,CLAND AX,000FHMOV CL,10 ;乘以 10MUL CLADD DX,AXAND BX,000FHADD DX,BXMOV AX,DXPOP DXPOP CXPOP BXRETBCDTOB2 ENDP9. 編寫兩個通用過程,一個完成 ASCII 碼轉(zhuǎn)換成二進制數(shù)功能,另一個完成 ASCII 字符顯 示輸出功能。答:( 1)將 AX 中兩位 ASCII 碼先轉(zhuǎn)化成數(shù)字,然后 AH*10+AL
34、 。子程序名: ASCIITOB2輸入?yún)?shù): AX=2 位 ASCII 碼輸出參數(shù): AX= 轉(zhuǎn)換后二進制數(shù) 使用寄存器: BX, CX,DXASCIITOB2 PROC FARPUSH BXPUSH CXPUSH DXMOV BX,AXSUB AH,30HMOV AL,AHMOV CL,10 ;乘以 10MUL CLMOV DX,AXMOV AX,BXSUB AL,30HMOV AH,0ADD AX,DXPOP DXPOP CXPOP BXRETASCIITOB2 ENDP( 2)使用 2 號 DOS 功能調(diào)用顯示字符。子程序名: DISPLAY輸入?yún)?shù): AX=2 位 ASCII 碼輸出參
35、數(shù):無使用寄存器: BX, DXDISPLAY PROC FARPUSH BXPUSH DXMOV BX,AXMOV DL,AHMOV AH,2INT 21HMOV AX,BXMOV DL,ALMOV AH,2INT 21HPOP DXPOP BXRETDISPLAY ENDP10. 編制兩個通用過程,完成十六進制數(shù)轉(zhuǎn)換成 ASCII 碼并將 ASCII 碼字符顯示 答:( 1)子程序名: HEXTOASC輸入?yún)?shù): AX: 4 位十六進制數(shù)輸出參數(shù):DX,AX : 4位ASCII碼,DX 高2位,AX 低2位 使用寄存器: BX,CX,DXHEXTOASC PROC FARPUSH BXPU
36、SH CXPUSH DXMOV BX,AXMOV CL,4 ;轉(zhuǎn)換 AH 高 4 位SHR AX,CLAND AX,0F00HADD AH,30HCMP AH,3AHJB A1ADD AH,7A1: MOV DH,AHMOV AX,BX ;轉(zhuǎn)換 AH 低 4 位AND AX,0F00HADD AH,30HCMP AH,3AHJB A2ADD AH,7A2: MOV DL,AHMOV BH,BL ;轉(zhuǎn)換 AL 高 4 位MOV CL,4SHR BL,CLADD BL,30HCMP BL,3AHJB A3ADD BL,7A3: MOV AH,BLAND BH,0FH ;轉(zhuǎn)換 AL 低 4 位ADD
37、 BH,30HCMP BH,3AHJB A4ADD BH,7A4: MOV AL,BHPOP DXPOP CXPOP BXRETHEXTOASC ENDP( 2)子程序名: DISPLAYASC 輸入?yún)?shù): DX, AX: 4 位 ASCII 碼輸出參數(shù):無使用寄存器: BX,CXDISPLAYASC PROC FARPUSH BXPUSH CXMOV BX,DXMOV CX,AXMOV DL,BHMOV AH,02HINT 21HMOV DL,BLINT 21HMOV DL,CHINT 21HMOV DL,CLINT 21HMOV DL, ' H'INT 21HPOP CXP
38、OP BXRETP0DISPLAYASC ENDP11. 某程序可從鍵盤接收命令(05),分別轉(zhuǎn)向6個子程序,子程序入口地址分別為 P5,編制程序,用跳轉(zhuǎn)表實現(xiàn)分支結(jié)構(gòu)。答: DATA SEGMENTTABLE DW 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI, TABLEMOV WORD PTRSI,OFFSET P0MOV WORD PTRSI+2,OFFSET P1MOV WORD PTRSI+4,OFFSET P2MOV WORD PTRSI+6,OFFSET
39、P3MOV WORD PTRSI+8,OFFSET P4MOV WORD PTRSI+10,OFFSET P5MOV AH,1INT 21HSUB AL,30HSHL AL,1MOV AH,0MOV SI,AXJMP TABLESIP0:P1:P2:P3:P4:P5:MOV AH,4CHINT 21HCODE ENDSEND START12. 在首地址為 TABLE 的數(shù)組中按遞增次序存放著 100 個 16 位補碼數(shù),編寫一個程序,把 出現(xiàn)次數(shù)最多的數(shù)及其出現(xiàn)次數(shù)分別存放于 AX 和 BL 中。答: DATA SEGMENTTABLE DW 100 DUP (?) ;數(shù)組中的數(shù)據(jù)是按增序排列
40、的NUM DW ?COUNT DW 0DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS: CODE, DS: DATASTART: PUSH DS ;設(shè)置返回 DOSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AX ;給 DS 賦值BEGIN: MOV CX, 100 ;循環(huán)計數(shù)器MOV SI, 0NEXT: MOV DX, 0MOV AX, TABLESICOMP: CMP TABLE SI, AX ;計算一個數(shù)的出現(xiàn)次數(shù)JNE ADDRINC DXADD SI, 2LOOP COMPADDR: CMP DX, COUNT
41、;此數(shù)出現(xiàn)的次數(shù)最多嗎?JLE DONEMOV COUNT, DX ;目前此數(shù)出現(xiàn)的次數(shù)最多,記下次數(shù)MOV NUM, AX ;記下此數(shù)DONE: LOOP NEXT ;準(zhǔn)備取下一個數(shù)MOV CX, COUNT ;出現(xiàn)最多的次數(shù)存入 (CX)MOV AX, NUM ;出現(xiàn)最多的數(shù)存入 (AX)RETMAIN ENDPCODE ENDS ;以上定義代碼段END START13. 將鍵盤上輸入的十六進制數(shù)轉(zhuǎn)換成十進制數(shù),在屏幕上顯示。答: DATA SEGMENTSTRING DB 'INPUT 4 HEX NUM:',0AH,0DH,'$'NUM DB 10 DU
42、P(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,STRING ;顯示提示信息MOV AH,9INT 21HMOV BP,4MOV DX,0CONT: MOV CL,4 ;輸入 4 DXSHL DX,CLD1: MOV AH,1INT 21HCMP AL,'0'JB D1CMP AL,'F'JA D1CMP AL,'A'JB A1SUB AL,7A1: SUB AL,30HMOV AH,0ADD DX,AXDEC BPJNZ CONTM
43、OV SI,0 ;將 DX 轉(zhuǎn)換成十進制數(shù),再轉(zhuǎn)換成 ASCII 碼 >NUMMOV AX,DXMOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SICMP AX,0JZ EXITMOV DX,0JMP D2EXIT: MOV DL,0AH ;顯示十進制數(shù)MOV AH,2INT 21HMOV DL,0DHINT 21HD3: DEC SIMOV DL,NUMSIMOV AH,2INT 21HJNZ D3MOV AH,4CHINT 21HCODE ENDSEND START14. 將 AX 中的無符號二進制數(shù)轉(zhuǎn)換成 ASCII 字符串
44、表示的十進制數(shù)。 答:將 13 題輸入過程和輸出過程去掉即得。DATA SEGMENTNUM DB 10 DUP(?) ;轉(zhuǎn)換后 ASCII 碼按倒序存放于 NUMDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX, XXXX ;無符號二進制數(shù)MOV SI,0 ;將 AX 轉(zhuǎn)換成十進制數(shù),再轉(zhuǎn)換成 ASCII 碼 >NUMMOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SICMP AX,0JZ EXITMOV DX,0JMP D2
45、EXIT: MOV AH,4CHINT 21HCODE ENDSEND START15. 從鍵盤輸入 20 個有符號數(shù),將它們排序并在屏幕上顯示。 答: DATA SEGMENTNUM DW 20 DUP(?) ;存放 20 個有符號數(shù)ASC DB 10 DUP(?) ;輸出時暫時保存每一個數(shù)的 ASCII 碼DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,20MOV BX,10MOV SI,0MOV BP,0BEGIN: MOV DX,0 ;輸入 20 個有符號數(shù)(十進制),并A1: M
46、OV AH,1 ;轉(zhuǎn)化為二進制數(shù)存放于 NUM 數(shù)組INT 21HCMP AL,' ' ;判斷是否空格JZ A2CMP AL,0DH ;是否回車符JZ A2CMP AL,'-' ;是否 -'JZ A3JMP A4A3: MOV BP,1JMP A1A4: PUSH AXMOV AX,DXMUL BXMOV DX,AXPOP AXSUB AL,30HMOV AH,0ADD DX,AXJMP A1A2: CMP BP,1JNZ A5NEG DX ;若為負(fù)數(shù),則取負(fù)A5: MOV NUMSI,DXMOV BP,0ADD SI,2LOOP BEGINMOV DL
47、,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HMOV BX,0 ;對 20 個有符號數(shù)按由小到大順序排序MOV CX,19 ;采用冒泡法,排序后依然存放于 NUM 數(shù)組L1: MOV DX,CXL2: MOV AX,NUMBXCMP AX,NUMBX+2JLE CONT1XCHG AX,NUMBX+2MOV NUMBX,AXCONT1: ADD BX,2LOOP L2MOV CX,DXMOV BX,0LOOP L1MOV CX,20 ;將 20 個有符號數(shù)(二進制)轉(zhuǎn)換為十進制數(shù)MOV SI,0 ;再轉(zhuǎn)換為 ASCII 碼并輸出屏幕D1: MOV AX,N
48、UMSIADD SI,2TEST AX,1000HJZ D4PUSH AXMOV DL,'-'MOV AH,2INT 21HPOP AXNEG AXD4: MOV DI,0MOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV ASCDI,DLINC DICMP AX,0JZ D3MOV DX,0JMP D2D3: MOV DL,ASCDI-1MOV AH,2INT 21HDEC DIJNZ D3MOV DL,' 'MOV AH,2INT 21HLOOP D1MOV AH,4CH ;返回 DOSINT 21HCODE ENDSEND S
49、TART16. 編寫多字節(jié)有符號數(shù)的加法程序,從鍵盤接收兩個加數(shù),在屏幕上顯示結(jié)果。答: DATA SEGMENTSTRING1 DB 'INPUT FIRST NUM(HEX):',0DH,0AH,'$'STRING2 DB 'INPUT SECOND NUM(HEX):',0DH,0AH,'$'STRING3 DB 'THE RESULT IS(HEX):',0DH,0AH,'$'NUM1 DW 0,0 ;存放加數(shù) 1NUM2 DW 0,0 ;存放加數(shù) 2RESULT DB 0,0,0,0 ;存
50、放結(jié)果DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,STRING1 ;輸入第一個加數(shù)( 4 位十六進制數(shù))MOV AH,9INT 21HMOV SI,2MOV CX,8CONT: PUSH CXCMP CX,4JNZ B1SUB SI,2B1: MOV CL,4SHL NUM1SI,CLC1: MOV AH,1INT 21HCMP AL,'0'JB C1CMP AL,'F'JA C1CMP AL,'A'JB A1SUB AL,7A1: SU
51、B AL,30HMOV AH,0ADD NUM1SI,AXPOP CXLOOP CONTMOV DL,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HLEA DX,STRING2 ;輸入第二個加數(shù)( 4 位十六進制數(shù))MOV AH,9INT 21HMOV SI,2MOV CX,8CONT1: PUSH CXCMP CX,4JNZ B2SUB SI,2B2: MOV CL,4SHL NUM2SI,CLC2: MOV AH,1INT 21HCMP AL,'0'JB C2CMP AL,'F'JA C2CMP AL,'A'
52、;JB A2SUB AL,7A2: SUB AL,30HMOV AH,0ADD NUM2SI,AXPOP CXLOOP CONT1MOV DL,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HLEA SI,NUM1 ;兩數(shù)相加LEA BX,NUM2LEA DI,RESULTMOV CX,4CLCAD: MOV AL,SIADC AL,BXMOV DI,ALINC SIINC BXINC DILOOP ADLEA DX,STRING3 ;顯示結(jié)果( 4 位十六進制數(shù))MOV AH,9INT 21HMOV CX,4MOV DI,3TT: PUSH CXMOV DL
53、,RESULTDIMOV CL,4SHR DL,CLADD DL,30HCMP DL,3AHJB D1ADD DL,7D1: MOV AH,2INT 21HMOV DL,RESULTDIAND DL,0FHADD DL,30HCMP DL,3AHJB D2ADD DL,7D2: MOV AH,2INT 21HDEC DIPOP CXLOOP TTMOV AH,4CH ;返回 DOSINT 21HCODE ENDSEND START17. 編寫 2 位非壓縮型 BCD 碼相乘的程序 答:轉(zhuǎn)化成加法進行累加運算。DATA SEGMENTDA1 DB 09H,09HDA2 DB 09H,08HRESULT DB 4 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,DA2+1 ;計算加法次數(shù)MOV BL,10MUL BLMOV BL,DA2MOV BH,0ADD AX,BXMOV CX,AXCONT: MOV AH,0 ;
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)作業(yè)規(guī)程管理辦法
- 《質(zhì)量管理體系及其實施措施范例》
- 何謂工程安全管理辦法
- 《學(xué)校心理輔導(dǎo)與心理健康教育復(fù)習(xí)資料》
- 村莊房屋綠化管理辦法
- 城市供水系統(tǒng)恒壓控制技術(shù)優(yōu)化設(shè)計研究
- AI時代數(shù)據(jù)價值最大化:從底層架構(gòu)到大模型應(yīng)用落地實踐
- 園區(qū)地面車輛管理辦法
- 物業(yè)公司員工績效考核與獎懲制度
- 鋼結(jié)構(gòu)廠房施工組織設(shè)計優(yōu)化與鋼結(jié)構(gòu)部分研究
- 【中考真題】2025年北京市中考數(shù)學(xué)真題(含解析)
- 浙江省臺州市2024-2025學(xué)年高一下學(xué)期6月期末英語試題
- 光伏發(fā)電項目施工方案(安裝)光伏施工方案
- 行為安全觀察與溝通
- 疲勞風(fēng)險培訓(xùn)課件
- GB/T 45707-2025皮革鉻鞣鞋面用坯革規(guī)范
- 2025年中小學(xué)教師職稱評審考試試卷及答案
- 中職學(xué)校教材管理制度
- 海綿城市建設(shè)中的BIM技術(shù)應(yīng)用實例
- 員工定崗定員管理制度
- 高校教師資格證考試《高等教育心理學(xué)》真題及解析(2025年)
評論
0/150
提交評論