版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(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)寄存器,寄存器相對(duì) (5)寄存器,寄存器相對(duì) (6)立即數(shù),基址變址( 7)基址變址,寄存器 ( 8)寄存器,相
2、對(duì)基址變址( 9)直接端口尋址,寄存器(10)寄存器,寄存器2. 已知: DS=1000H ,BX=0200H , SI=02H ,內(nèi)存 10200H 10205H 單元的內(nèi)容分別為10H,2AH ,3CH ,46H,59H, 6BH 。下列每條指令執(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)5946H (5) 463CH ( 6
3、) 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 ,VALBXDI(10)MOV AX
4、 ,BPDI答:( 1)直接, 10100H ( 2)直接, 10030H (3)寄存器間接 ,10100H( 4)寄存器間接, 20100H (5)寄存器間接 ,100A0H (6)寄存器相對(duì), 10110H( 7)寄存器間接, 35200H (8)相對(duì)基址變址, 352D0H( 9)相對(duì)基址變址, 10154H ( 10)基址變址, 35224H4. 寫出下列指令的機(jī)器碼( 1)MOV AL ,CL (2)MOV DX ,CX (3) MOV BX+100H ,3150H答:( 1)10001010 11000001B( 2)10001011 11010001B( 3)11000111 1
5、0000111 00000000 00000001 01010000 00110001B5. 已知程序的數(shù)據(jù)段為:DATA SEGMENTA DB $ ,10HB DB COMPUTERC 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, E1 / 49LES DI, E答: MOV AL, A AL=24HMOV DX, C DX=1234HXCHG DL, A DL=
6、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. 指出下列指令中哪些是錯(cuò)誤的,錯(cuò)在什么地方。( 1)MOV DL ,AX (2)MOV 8650H ,AX (3)MOVDS, 0200H( 4)MOV BX ,1200H ( 5) MOV IP ,0FFH ( 6)MOV BX+SI+3, IP( 7)MOV AX ,BXBP (8)MOV AL ,ES:BP ( 9)MOV DL ,SID
7、I( 10) MOV AX , OFFSET 0A20H (11) MOV AL ,OFFSET TABLE( 12)XCHG AL ,50H ( 13)IN BL ,05H ( 14)OUTAL , 0FFEH答:( 1)長度不匹配( 2)立即數(shù)不能做目的操作數(shù)( 3)段寄存器不能用立即數(shù)賦值 ( 4)兩個(gè)內(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 位, AL 長度不夠 ( 12)立
8、即數(shù)不能用于 XCHG( 13) IN 必須用 AL/AX (14)操作數(shù)順序反向;地址應(yīng)為 8 位7. 已知當(dāng)前數(shù)據(jù)段中有一個(gè)十進(jìn)制數(shù)字0 9 的 7 段代碼表,其數(shù)值依次為40H , 79H,24H,30H ,19H,12H,02H,78H ,00H,18H。要求用 XLAT2 / 49指令將十 制數(shù)57 成相 的7 段代 ,存到BX寄存器中, 寫出相 的程序段。答:DATA SEGMENTTABLE DB 40H , 79H ,24H ,30H ,19H, 12H, 02H , 78H , 00H,18HDATA ENDSMOV AL , 5MOV BX , OFFSET TABLEXL
9、AT TABLEMOV CL , ALMOV AL , 7XLAT TABLEMOV BL , ALMOV BH , CL8. 已 知 當(dāng) 前SS=1050H , SP=0100H , AX=4860H ,BX=1287H , 用示意 表示 行下列指SP 是怎 化令 程中,堆 中的內(nèi)容和堆 指 的。PUSH AXPUSH BXPOP BXPOP AX3 / 49( 1)指9. 下列指令完成什么功能?( 1)ADD AL ,DH ( 2)ADC BX ,CX ( 3)SUB AX ,2710H( 4) DEC BX ( 5)NEG CX (6) INC BL( 7) MUL BX ( 8) DI
10、V CL答:( 1) AL+DH AL ( 2)BX+CX+CF BX( 3)AX-2710H AX( _4)BX-1 BX ( 5)0-CX CX (6)BL+1 BL( 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 AX( 4) XOR CX , 0FFF0H ( 5)TEST DH ,0FH ( 6)CMP CX , 00H( 7)
11、 SHR DX , CL ( 8)SAR AL , 1 ( 9)SHL BH ,CL( 10)SAL AX ,1 (11)RCL BX ,1 ( 12)ROR DX ,4 / 49CL答:( 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=0F036H , CF=0 ( 10) AX=4A10H , CF=0( 1
12、1) BX=1E6C/1E6DH , CF=0 ( 12) DX=4186H ,CF=011. 假設(shè)數(shù)據(jù)段定義如下:DATA SEGMENTSTRING DB The Personal Computer & TVDATA ENDS試用字符串操作等指令編程完成以下功能:( 1)把該字符串傳送到附加段中偏移量為 GET_CHAR 開始的內(nèi)存單元中。( 2)比較該字符串是否與 The Computer相同,若相同則將 AL 寄存器的內(nèi)容置 1,否則置0。并要求將比較次數(shù)送到BL寄存器中。( 3)檢查該字符串是否有 &,若有則用空格字符將其替換。( 4)把字符串大寫字母?jìng)魉偷礁郊佣沃幸?CAPS 開始
13、的單元中,其余字符傳到以 CHART開始的單元中。 然后將數(shù)據(jù)段中存儲(chǔ)上述字符串的單元清 0。答:( 1) CLDLEA SI,STRINGLEA DI,GET_CHARMOV CX,26REP MOVSB( 2)補(bǔ)充在附加段定義STRING1 DB The computerMOV AL,1CLDLEA SI,STRINGLEA DI,STRING15 / 49MOV CX,12REPZ CMPSBJZ SKIPMOV AL,0SKIP: MOV BX,12SUB BX,CX( 3) MOV AX, DATAMOV ES, AXCLDMOV AL,&LEA DI,STRINGMOV CX,26
14、NEXT: 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, AJB OTHERCMP AL, ZJA OTHERMOV ES:DI,ALINC DIJMP SKIPOTHER: MOV ES:BX,ALINC BXSKIP: MOV BYTE PTRSI,0INC SILOOP NEXT12. 編程將 AX寄存器中的內(nèi)容以相反的順序傳送到DX寄存器中,
15、并要求AX中的內(nèi)容不被破壞,然后統(tǒng)計(jì)DX寄存器中 1的個(gè)數(shù)是多少。答:MOV BL,0PUSH AXMOV DX,0MOV CX,166 / 49NEXT: SHL AX,1JNC SKIPINC BLSKIP: RCR DX,1LOOP NEXTSTOP: POP AX13. 設(shè) CS=1200H, IP=0100H ,SS=5000H ,SP=0400H,DS=2000H ,SI=3000H ,BX=0300H ,( 20300H )=4800H ,( 20302H)=00FFH , TABLE=0500H ,PROG_N 標(biāo)號(hào)的地址為 1200:0278H, PROG_F 標(biāo)號(hào)的地址為
16、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í)行?并請(qǐng)畫圖說明堆棧中的內(nèi)容和堆棧指針如何變化。答:( 1)1200H : 0278H( 2)1200H : 0300H( 3)1200H : 4800H( 4)3400H : 0ABCH( 5)00FFH :4800H將操作碼JMP 改成 CALL后:( 1)1200H : 0278H指令長
17、度為3,則 IP=0100H+3=0103H ,入棧( 5)00FFH :4800H指令長度為2,則 IP=0100H+2=0102H ,入棧14. 在下列程序段括號(hào)中分別填入以下指令( 1)LOOP NEXT (2) LOOPE NEXT (3) LOOPNE NEXT試說明在這三種情況下,程序段執(zhí)行完后,AX , BX ,CX , DX 的內(nèi)容分別是什么。START: MOV AX,01HMOV BX,02HMOV DX,03H7 / 49MOV CX,04HNEXT: INC AXADD BX,AXSHR DX,1( )答:( 1) AX=05H BX=10H CX=0 DX=0( 2)
18、 AX=02H BX=04H CX=03H DX=01H( 3) AX=03H BX=07H CX=02H DX=015. 某班有 7 個(gè)同學(xué)英語成績低于 80 分,分?jǐn)?shù)存在 ARRAY 數(shù)組中,試編程完成以下工作:( 1)給每人加 5 分,結(jié)果存到 NEW 數(shù)組中( 2)把總分存到 SUM 單元中答: DATA SEGMENTARRAY DB ?,?,?,?,?,?,?NEW DB 7 DUP(?)SUM DW 0DATA ENDSMOV AX ,DATAMOV DS, AX( 1) LEA SI,ARRAYLEA DI,NEWMOV CX,7NEXT: MOV AL, SIADD AL,
19、5MOV DI, ALINC SIINC DILOOP NEXT( 2) LEA SI ,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)存00000H 003FFH 的區(qū)域內(nèi)。中斷向量表中0000
20、CH 0000FH 用于類型3 的中斷。17. 設(shè)類型 2 的中斷服務(wù)程序的起始地址為 0485:0016H,它在中斷向量表中如何存放?答:物理地址 內(nèi)容00008H 16H00009H 00H0000AH 85H0000BH 04H18. 若中斷向量表中地址為 0040H 中存放 240BH , 0042H 單元里存放的是 D169H ,試問:( 1)這些單元對(duì)應(yīng)的中斷類型是什么?( 2)該中斷服務(wù)程序的起始地址是什么?答:( 1)10H( 2)D169H:240BH19. 簡要說明 8086 響應(yīng)類型 0 4 中斷的條件是什么?答:類型 0:除法錯(cuò)中斷8 / 49執(zhí)行除法指令時(shí),若除數(shù)為0
21、 或所得商超過寄存器能容納的范圍,則自動(dòng)產(chǎn)生類型0中斷。類型 1:單步中斷若 CPU 的單步標(biāo)志TF=1 ,則每執(zhí)行完一條指令后,自動(dòng)產(chǎn)生類型1 中斷。類型 2:不可屏蔽中斷NMI當(dāng) 8086 的 NMI引腳上接收到由低變高的電平變化時(shí),將自動(dòng)產(chǎn)生類型2 中斷。類型 3:斷點(diǎn)中斷若在程序中某位置設(shè)置斷點(diǎn),當(dāng)程序執(zhí)行到該斷點(diǎn)時(shí),則產(chǎn)生類型3 中斷。類型 4:溢出中斷若溢出標(biāo)志OF=1,則可由溢出中斷指令I(lǐng)NTO產(chǎn)生類型4 中斷。第四章1. 下列變量各占多少字節(jié)?A1 DW 23H , 5876HA2 DB 3 DUP (?), 0AH ,0DH, $A3 DD 5 DUP(1234H, 5678
22、90H)A4 DB 4 DUP(3 DUP(1, 2, ABC )答: A1占 4 個(gè)字節(jié)A2占 6 個(gè)字節(jié)A3占 40 個(gè)字節(jié)A4占 60 個(gè)字節(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. 有符
23、號(hào)定義語句如下:BUF DB 3,4,5, 123ABUF 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 之間定義的變量所占
24、的字節(jié)個(gè)數(shù)。5. 對(duì)于下面的數(shù)據(jù)定義,各條 MOV 指令執(zhí)行后,有關(guān)寄存器的內(nèi)容是什么?DA1 DB ?DA2 DW 10 DUP(?)DA3 DB ABCDMOV AX, TYPE DA1MOV BX, SIZE DA2MOV CX, LENGTH DA3答: AX=1,BX=20,CX=16. 下段程序完成后, AH 等于什么?IN AL, 5FHTEST AL, 80H9 / 49JZ L1MOV AH, 0JMP STOPL1: MOV AH, 0FFHSTOP: HLT答:討論從端口 5FH輸入的數(shù)據(jù)最高位的情況。若最高位為1,則 AH=0 ;若最高位為0,則 AH=0FFH 。7.
25、 編程序完成下列功能:( 1)利用中斷調(diào)用產(chǎn)生 5 秒延時(shí)。( 2)利用中斷調(diào)用,在屏幕上顯示1 9 之間隨機(jī)數(shù)。答:( 1)可以利用中斷類型 1CH 來處理,因?yàn)樵谙到y(tǒng)時(shí)鐘的中斷處理程序中,時(shí)鐘中斷一次要調(diào)用一次 INT 1CH ,即每隔 55ms,產(chǎn)生一次 1CH 中斷,要產(chǎn)生 5 秒延時(shí),只要中斷 5s/55ms=91 次即可。又因 1CH 中斷處理程序中只有一條 IRET 指令,故可將用戶的程序代替原有的INT 1CH程序。DATA SEGMENTCOUNT DW 91 ; 計(jì)數(shù)器MESS DB 5 s delayed! ,0AH,0DH, $DATA ENDSCODE SEGMENT
26、MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AL,1CH ; 得到原中斷向量MOV AH,35HINT 21HPUSH ES ;存儲(chǔ)原中斷向量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 21H,ALSTIM
27、OV 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 DS10 / 49PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXSTIDEC COUNT;5 秒計(jì)數(shù)JNZ EXITMOV DX,OFFSET MESS;顯示信息MOV AH,09HINT 21HMOV COUNT,91;5 秒的值EXIT: CLIPOP
28、 DXPOP CXPOP AXPOP DSIRETDELAY ENDPCODE ENDSEND START( 2)可以利用INT 1AH ,讀取當(dāng)前時(shí)間的1/100秒為隨機(jī)數(shù)。CODE SEGMENTASSUME CS:CODESTART : MOV AH,0INT 1AH;讀取當(dāng)前時(shí)間CH :CL= 時(shí):分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. 編兩個(gè)通過過程完成將 AX 中存
29、放的二進(jìn)制數(shù)轉(zhuǎn)換成壓縮型 BCD 碼以及將 BCD 碼轉(zhuǎn)換成二進(jìn)制數(shù)。答:( 1)將 AX中的二進(jìn)制數(shù)先后除以1000,100 和 10,每次除法所得的商,即是BCD 數(shù)的千位、百位和十位數(shù),余數(shù)是個(gè)位數(shù)。子程序名: B2TOBCD輸入?yún)?shù): AX= 十六位二進(jìn)制數(shù)輸出參數(shù): CF=0,則 AX=4位壓縮型 BCD碼。 CF=1,則要轉(zhuǎn)換的數(shù)大于9999,AX不變。使用寄存器: CX :存放除數(shù), DX :存放中間結(jié)果。B2TOBCD PROC FARCMP AX,9999; AX9999 ,則 CF 置 1JBE TRANSTCJMP EXITTRAN: PUSH CXPUSH DXSUB
30、DX,DX; DX 清 0MOV CX,1000;計(jì)算千位數(shù)DIV CX11 / 49XCHG AX,DX;商在 DX中,余數(shù)在 AX 中MOV CL,4SHL DX,CL; DX 左移 4位MOV CL,100;計(jì)算百位數(shù)DIV CLADD DL,AL;百位數(shù)加到DL 中, DX左移 4位MOV CL,4SHL DX,CLXCHG AL,AH;余數(shù)保留在 AL 中SUB AH,AHMOV CL,10;計(jì)算十位數(shù)DIV CLADD DL,AL;十位數(shù)加到DL 中, DX左移 4位MOV CL,4SHL DX,CLADD DL,AH;加個(gè)位數(shù)MOV AX,DX;結(jié)果送到 AX 中POP DXPO
31、P CXEXIT: RETB2TOBCD ENDP( 2)將 AX 中 4 位 BCD 碼順序乘以 1000,100 ,10 和 1,然后求和即得。子程序名: BCDTOB2輸入?yún)?shù): AX=4位壓縮 BCD 碼輸出參數(shù): AX= 十六位二進(jìn)制數(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,AXMOV AX,BXMOV CL,8ROL AX,CLAND A
32、X,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 BXRET12 / 49BCDTOB2 ENDP9. 編寫兩個(gè)通用過程,一個(gè)完成 ASCII 碼轉(zhuǎn)換成二進(jìn)制數(shù)功能,另一個(gè)完成 ASCII 字符顯示輸出功能。答:( 1)將 AX中兩位 ASCII碼先轉(zhuǎn)化成數(shù)字,然后AH*10+AL 。子程序名: ASCIITOB2輸入?yún)?shù): AX=2位 AS
33、CII碼輸出參數(shù): AX= 轉(zhuǎn)換后二進(jì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 號(hào) DOS 功能調(diào)用顯示字符。子程序名: DISPLAY輸入?yún)?shù): AX=2位 ASCII碼輸出參數(shù):無使用寄存器: BX , DXDISPLAY PROC FARPU
34、SH BXPUSH DXMOV BX,AXMOV DL,AHMOV AH,2INT 21HMOV AX,BXMOV DL,ALMOV AH,2INT 21HPOP DXPOP BXRETDISPLAY ENDP10. 編制兩個(gè)通用過程,完成十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼并將 ASCII碼字符顯示。答:( 1)子程序名: HEXTOASC輸入?yún)?shù): AX : 4 位十六進(jìn)制數(shù)輸出參數(shù): DX,AX : 4 位 ASCII碼 ,DX高 2 位, AX低 2 位使用寄存器: BX,CX,DXHEXTOASC PROC FARPUSH BXPUSH CXPUSH DXMOV BX,AXMOV CL,4;
35、轉(zhuǎn)換 AH高 4 位13 / 49SHR 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 BH,30HCMP BH,3AHJB A4ADD BH,7A
36、4: 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, HINT 21HPOP CXPOP BXRETDISPLAYASC ENDP11. 某程序可從鍵盤接收命令(05),
37、分別轉(zhuǎn)向6 個(gè)子程序,子程序入口地址分別為P014 / 49P5,編制程序,用跳轉(zhuǎn)表實(shí)現(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 P3MOV WORD PTRSI+8,OFFSET P4MOV WORD
38、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 個(gè) 16 位補(bǔ)碼數(shù),編寫一個(gè)程序,把出現(xiàn)次數(shù)最多的數(shù)及其出現(xiàn)次數(shù)分別存放于AX和 BL中。答:DATA SEGMENTTABLE DW 100 DUP (?);數(shù)組中的數(shù)據(jù)是按增序排列的NUM DW ?COUNT DW 0DATA ENDSCODE SEGMENTMAIN P
39、ROC FARASSUME CS: CODE, DS: DATASTART: PUSH DS;設(shè)置返回DOSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AX;給 DS 賦值BEGIN: MOV CX, 100;循環(huán)計(jì)數(shù)器MOV SI, 0NEXT: MOV DX, 0MOV AX, TABLESICOMP: CMP TABLE SI, AX;計(jì)算一個(gè)數(shù)的出現(xiàn)次數(shù)JNE ADDRINC DXADD SI, 2LOOP COMPADDR: CMP DX, COUNT;此數(shù)出現(xiàn)的次數(shù)最多嗎?JLE DONE15 / 49MOV COUNT, DX;目前此數(shù)出現(xiàn)的次數(shù)最多
40、,記下次數(shù)MOV NUM, AX;記下此數(shù)DONE: LOOP NEXT;準(zhǔn)備取下一個(gè)數(shù)MOV CX, COUNT;出現(xiàn)最多的次數(shù)存入(CX)MOV AX, NUM;出現(xiàn)最多的數(shù)存入(AX)RETMAIN ENDPCODE ENDS;以上定義代碼段END START13. 將鍵盤上輸入的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),在屏幕上顯示。答: DATA SEGMENTSTRING DB INPUT 4 HEX NUM:,0AH,0DH,$NUM DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,A
41、XLEA DX,STRING;顯示提示信息MOV AH,9INT 21HMOV BP,4MOV DX,0CONT: MOV CL,4;輸入 4 位十六進(jìn)制數(shù)DXSHL DX,CLD1: MOV AH,1INT 21HCMP AL,0JB D1CMP AL,FJA D1CMP AL,AJB A1SUB AL,7A1: SUB AL,30HMOV AH,0ADD DX,AXDEC BPJNZ CONTMOV SI,0;將 DX轉(zhuǎn)換成十進(jìn)制數(shù),再轉(zhuǎn)換成ASCII碼 NUMMOV AX,DXMOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SIC
42、MP AX,0JZ EXITMOV DX,0JMP D2EXIT: MOV DL,0AH;顯示十進(jìn)制數(shù)MOV AH,2INT 21HMOV DL,0DHINT 21HD3: DEC SIMOV DL,NUMSI16 / 49MOV AH,2INT 21HJNZ D3MOV AH,4CHINT 21HCODE ENDSEND START14. 將 AX中的無符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換成ASCII字符串表示的十進(jìn)制數(shù)。答:將 13題輸入過程和輸出過程去掉即得。DATA SEGMENTNUM DB 10 DUP(?);轉(zhuǎn)換后 ASCII碼按倒序存放于 NUMDATA ENDSCODE SEGMENTASSUM
43、E CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX, ;無符號(hào)二進(jìn)制數(shù)MOV SI,0;將 AX轉(zhuǎn)換成十進(jìn)制數(shù),再轉(zhuǎn)換成ASCII 碼 NUMMOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SICMP AX,0JZ EXITMOV DX,0JMP D2EXIT: MOV AH,4CHINT 21HCODE ENDSEND START15. 從鍵盤輸入 20 個(gè)有符號(hào)數(shù),將它們排序并在屏幕上顯示。答: DATA SEGMENTNUM DW 20 DUP(?);存放 20 個(gè)有符號(hào)數(shù)ASC
44、DB 10 DUP(?);輸出時(shí)暫時(shí)保存每一個(gè)數(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 個(gè)有符號(hào)數(shù)(十進(jìn)制),并A1: MOV AH,1;轉(zhuǎn)化為二進(jìn)制數(shù)存放于NUM數(shù)組INT 21HCMP AL, ;判斷是否空格JZ A2CMP AL,0DH;是否回車符JZ A2CMP AL,-;是否 -JZ A3JMP A4A3: MOV BP,1JMP A1A4: PUSH AX17 / 49MOV 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
溫馨提示
- 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廣西柳州市蓮花山保護(hù)中心招聘半專業(yè)森林防火隊(duì)員1人 (第二批)筆試備考重點(diǎn)題庫及答案解析
- 2025西藏山南市扎囊縣第二批招聘城市社區(qū)工作者10人備考考試題庫及答案解析
- 2025湖南機(jī)場(chǎng)建設(shè)指揮部招聘筆試備考重點(diǎn)試題及答案解析
- 2025湖南郴州市財(cái)金發(fā)展有限公司中層管理人員選聘2人模擬筆試試題及答案解析
- 2025年婚慶服務(wù)委托協(xié)議(新人)
- 2025廣東佛山市順德區(qū)順北集團(tuán)有限公司招商事業(yè)部負(fù)責(zé)人等崗位招聘4人備考考試題庫及答案解析
- 2025安徽錢營孜發(fā)電有限公司社會(huì)招聘5人備考考試題庫及答案解析
- 2025年下半年合肥市人力資源服務(wù)有限公司社會(huì)招聘5名備考考試試題及答案解析
- 寧波寧海農(nóng)村商業(yè)銀行2026年招聘6人筆試備考重點(diǎn)試題及答案解析
- 2025重慶醫(yī)科大學(xué)附屬第三醫(yī)院(第2期)招聘11人筆試備考重點(diǎn)試題及答案解析
- 法院起訴收款賬戶確認(rèn)書范本
- 15ZJ001 建筑構(gòu)造用料做法
- 課堂觀察與評(píng)價(jià)的基本方法課件
- 私募基金內(nèi)部人員交易管理制度模版
- 針對(duì)低層次學(xué)生的高考英語復(fù)習(xí)提分有效策略 高三英語復(fù)習(xí)備考講座
- (完整)《走遍德國》配套練習(xí)答案
- 考研準(zhǔn)考證模板word
- 周練習(xí)15- 牛津譯林版八年級(jí)英語上冊(cè)
- 電力電纜基礎(chǔ)知識(shí)課件
- 代理記賬申請(qǐng)表
- 模型五:數(shù)列中的存在、恒成立問題(解析版)
評(píng)論
0/150
提交評(píng)論