


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章1. 分別說明下列指令的源操作數和目的操作數各采用什么尋址方式。( 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)立即數,寄存器 (2)立即數,寄存器 ( 3)寄存器間接,寄存器( 4)寄存器,寄存器相對 (5)寄存器,寄存器相對 ( 6)立即數,基址變址( 7)基址變址,寄存
2、器 (8)寄存器,相對基址變址( 9)直接端口尋址,寄存器 (10)寄存器,寄存器2. 已知:DS=1000H, BX=0200H , SI=02H,內存 10200H 10205H 單元的內容分別為 10H ,2AH , 3CH, 46H , 59H , 6BH。下列每條指令執行完后 AX寄存器的內容各是什么?(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)6B5
3、9H3. 設 DS=1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H,數據段中變量名為 VAL的偏移地址值為0030H,試說明下列源操作數字段的尋址方式是什 么?物理地址值是多少?(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,BPDI答:( 1)直接, 10100H (2)直接, 1
4、0030H (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 11010001B(3)11000111 10000111 00000000 00000001 01010000 0011
5、0001B5. 已知程序的數據段為:DATA SEGMENTA DB $' ,10HB DB COMPUTER'C DW 1234H, 0FFHD DB 5 DUP(?)E DD 1200459AHDATA ENDS求下列程序段執行后的結果是什么。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 DX=1234HXCHG DL, A DL=24H, A=34HMOV BX, OFFSET B BX=2MOV
6、 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,ES:BP (9) MOV DL, SIDI(10)MOV AX,OFFSET 0A20H (11)MOV AL,OFFSE
7、T TABLE(12)XCHG AL,50H (13)IN BL, 05H (14)OUT AL, 0FFEH答:( 1)長度不匹配 ( 2)立即數不能做目的操作數( 3)段寄存器不能用立即數賦值(4)兩個內存單元不能直接傳送數據(5)IP 不能用指令直接修改 ( 6)指令中不能出現 IP(7) BX/BP 應與 SI/DI 搭配 (8)正確( 9) SI/DI 應與 BX/BP 搭配 ( 10) OFFSET 后應跟 內存單元( 11)偏移地址為 16 位, AL 長度不夠 ( 12)立即數 不能用于 XCHG( 13) IN 必須用 AL/AX (14)操作數順序反向;地 址應為 8 位7
8、. 已知當前數據段中有一個十進制數字09的7段代碼表,其數值依次為 40H,79H, 24H,30H , 19H , 12H , 02H , 78H , 00H , 18H。要求用 XLAT 指令將十進制數 57 轉換成相應的7 段代碼值, 存到 BX 寄存器中, 試寫出相應的程序段。 答: DATA SEGMENTTABLE DB 40H , 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 18HDATA ENDSMOV AL, 5MOV BX, OFFSET TABLEXLAT TABLEMOV CL, ALMOV AL, 7XLAT TABLEMOV BL
9、, ALMOV BH, CL8. 已知當前 SS=1050H, SP=0100H , AX=4860H ,BX=1287H,試用示意圖表示執行下列指令過程中,堆棧中的內容和堆棧指針SP是怎樣變化PUSH AXPUSH BXPOP BXPOP AX警上C1摘寺fiU了恥10500HSP4 y tMT POP BX Ki(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)DIV CL答:(1 )AL+DHAL (2) BX+CX+Ci BX (3) A
10、X-2710HAX(4 ) BX-1 BX (5) 0-CX CX (6) BL+1BL(7) AX*BX DX, AX ( 8) AX/CL 商AL,余數AH10. 已 知 AX=2508H , BX=0F36H , CX=0004H , DX=1864H ,求下列每條指令執行后的結果是什么?標志位 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) SHR DX, CL (8) SAR AL, 1 (9) SHL BH, CL (1
11、0) 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=0F036H, CF=0 ( 10) AX=4A10H , CF=0( 11) BX=1E6C/1E6DH , CF=0 ( 12) DX=4186H, CF=011. 假設
12、數據段定義如下:DATA SEGMENTSTRING DB The Personal Computer & TV 'DATA ENDS試用字符串操作等指令編程完成以下功能:( 1)把該字符串傳送到附加段中偏移量為GET_CHAR開始的內存單元中。( 2)比較該字符串是否與 ' The Computer 相同,'若相 同則將 AL 寄存器的內容置 1,否則置0。并要求將比較次數送到 BL 寄存器中( 3)檢查該字符串是否有 ' &,'若有則用空格字符將其 替換。( 4)把字符串大寫字母傳送到附加段中以CAPS 開始的單元中,其余字符傳到以
13、CHART開始的單元中。 然后將數據段中存儲上述字符串的單元 清 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 BX,CX(3) MOV AX, DATAMOV ES, AXCLDMOV AL,'&'LEA DI,STRINGMOV CX,
14、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,ALINC DIJMP SKIPOTHER: MOV ES:BX,ALINC BXSKIP: MOV BYTE PTRSI,0INC SILOOP NEX
15、T12. 編程將 AX 寄存器中的內容以相反的順序傳送到 DX 寄存器中,并要求 AX 中的內容不 被破壞,然后統計 DX 寄存器中 1'的個數是多少。答: MOV BL,0PUSH AXMOV DX,0MOV CX,16NEXT: SHL AX,1JNC SKIPINC BLSKIP: RCR DX,1LOOP NEXTSTOP: POP AX13. 設 CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H, SI=3000H, BX=0300H, (20300H)=4800H,( 20302H)=00FFH,TABLE=0500H,PROG_N
16、標號的地址為 1200:0278H , PROG_F標號的地址為3400H : OABCH。說明下列每條指令執行完后,程序將分別 轉移到何處執行?( 1)JMP PROG_N( 2)JMP BX( 3)JMP BX( 4)JMP FAR PROG_F(5)JMP DWORD PTR BX如將上述指令中的操作碼 JMP改成CALL,則每條指令執行完后,程序轉向何處執行?并 請畫圖說明堆棧中的內容和堆棧指針如何變化。答:(1) 1200H : 0278H(2)1200H :0300H(3)1200H :4800H(4)3400H :0ABCH(5)00FFH :4800H將操作碼JMP改成CALL
17、 后:(1) 1200H : 0278H指令長度為 3,貝U IP=0100H+3=0103H,入棧C 1> 120OH: O27EH3, W| IPOKXJ&-3-O1Q3H. 人程(5) 00FFH : 4800H指令長度為2,貝U IP=0100H+2=0102H,入棧5OOOH:5OOOH:OOOCII03FCH<-SP5COOH; -03FEH3QOQH; OWflH14. 在下列程序段括號中分別填入以下指令(1) LOOP NEXT ( 2) LOOPE NEXT ( 3) LOOPNE NEXT試說明在這三種情況下,程序段執行完后,AX,BX,CX, DX的內
18、容分別是什么。START: MOV AX,01HMOV 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(3)AX=03H BX=07H CX=02H DX=015. 某班有7個同學英語成績低于 80分,分數存在ARRAY數組中,試編程完成以下工作:(1)給每人加5分,結果存到 NEW數組中(2)把總分存到SUM單元中答: DATA SEGMENTARRAY DB ?,?,?,?,?,?,?NEW DB 7 DU
19、P(?)SUM 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 SI,ARRAYCLCSP5000H: 0000H5000H: 03FCH5000H: 03FEH5000H: 0400HMOV CX, 7NEXT1: MOV AL,SIMOV AH, 0ADC SUM, AXINC SILOOP NEXT116. 中斷向量表的作用是什么?它放在內存的什么區域內?中斷向量表中的什么
20、地址用于 類型 3 的中斷?答:中斷向量表用來存放中斷服務程序的入口地址。 8086 的 256 類中斷的入口地址要占用1K字節,位于內存 00000H003FFH的區域內。中斷向量表中OOOOCHOOOOFH用于類型3 的中斷。17. 設類型2的中斷服務程序的起始地址為0485 : 0016H,它在中斷向量表中如何存放?答:物理地址 內容00008H 16H00009H 00H0000AH 85H0000BH 04H18. 若中斷向量表中地址為 0040H中存放240BH,0042H單元里存放的是 D169H,試問:(1)這些單元對應的中斷類型是什么?(2)該中斷服務程序的起始地址是什么?答
21、:( 1 )10H(2)D169H:240BH19. 簡要說明8086響應類型04中斷的條件是什么?答:類型 0:除法錯中斷執行除法指令時,若除數為 0 或所得商超過寄存器能容納的范圍,則自動產生類型 0 中斷。類型 1:單步中斷若 CPU 的單步標志 TF=1 ,則每執行完一條指令后,自動產生類型1 中斷。類型 2:不可屏蔽中斷 NMI當 8086 的 NMI 引腳上接收到由低變高的電平變化時,將自動產生類型 2 中斷。類型 3:斷點中斷 若在程序中某位置設置斷點,當程序執行到該斷點時,則產生類型 3 中斷。類型 4:溢出中斷若溢出標志0F=1,則可由溢出中斷指令INTO產生類型4中斷。第四
22、章1. 下列變量各占多少字節?A1 DW 23H , 5876HA2 DB 3 DUP(?) , 0AH, 0DH, $'A3 DD 5 DUP(1234H, 567890H)A4 DB 4 DUP(3 DUP(1, 2,' ABC' )答: A1 占 4 個字節A2 占 6 個字節A3 占 40 個字節A4 占 60 個字節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
23、 OR 00FFH 答:( 1 )將 0066H 傳送給 AX( 2)將 0FFH 傳送給 AL( 3)將 0FFFFH 傳送給 AX(4)AND AL, 02H(5)OR AX, 00FFH3. 有符號定義語句如下:BUF DB 3,4,5,'123'ABUF DB 0L EQU ABUF-BUF求 L 的值為多少?答: L=64. 假設程序中的數據定義如下:PAR DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PAR求 PLENTH 的值為多少?表示什么意義?答:PAR的偏移地址為 0, PLENTH當前偏移地址$=2+16+4=
24、22 ,$-PAR=22,故PLENTH的值為 22。若在 PLENTH 所在行有變量定義,則 $表示該變量的偏移地址,即 $表示 PLENTH 所在 行的當前偏移地址。故 PLENTH 表示從當前行到 PAR 之間定義的變量所占的字節個數。5. 對于下面的數據定義,各條 MOV 指令執行后,有關寄存器的內容是什么? 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, 5FHTE
25、ST AL, 80HJZ L1MOV AH, 0JMP STOPL1: MOV AH, 0FFHSTOP: HLT答:討論從端口 5FH輸入的數據最高位的情況。若最高位為1,則AH=O;若最高位為0,則 AH=0FFH。7. 編程序完成下列功能:( 1 )利用中斷調用產生 5 秒延時。(2)利用中斷調用,在屏幕上顯示19之間隨機數。答:( 1)可以利用中斷類型 1CH 來處理,因為在系統時鐘的中斷處理程序中,時鐘中斷一 次要調用一次INT 1CH,即每隔55ms,產生一次1CH中斷,要產生5秒延時,只要中斷 5s/55ms=91 次即可。又因 1CH 中斷處理程序中只有一條 IRET 指令,故
26、可將用戶的程序代 替原有的 INT 1CH 程序。DATA SEGMENTCOUNT DW 91 ; 計數器MESS DB 5 s delayed! ',0AH,0DH, ' $'DATA ENDSCODE SEGMENTMAIN 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 DELA
27、Y ; DELAY 的偏移地址和段地址MOV AX,SEG DELAYMOV DS,AXMOV AL,1CH ;設置中斷向量MOV AH,25HINT 21HPOP DSIN AL,21H ;設置中斷屏蔽位AND AL,0FEHOUT 21H,ALSTIMOV DI,2000H ;主程序延遲,在執行此段程序期間A1: MOV SI,3000H ;產生中斷A2: DEC SIJNZ A2DEC DIJNZ A1POP DX ;取原中斷向量POP DSMOV AL,1CHMOV AH,25HINT 21HRETMAIN ENDPDELAY PROC NEARPUSH DSPUSH AXPUSH C
28、XPUSH DXMOV AX,DATAMOV DS,AXSTIDEC COUNT ; 5 秒計數JNZ EXITMOV DX,OFFSET MESS ;顯示信息MOV AH,09HINT 21HMOV COUNT,91 ; 5 秒的值EXIT: CLIPOP DXPOP CXPOP AXPOP DSIRETDELAY ENDPCODE ENDSEND START(2)可以利用INT 1AH,讀取當前時間的1/100秒為隨機數。CODE SEGMENTASSUME CS:CODESTART:MOV AH,0INT 1AH ;讀取當前時間 CH: CL=時:分MOV AL,DL ; DH: DL=
29、秒:1/100 秒MOV AH,0MOV BL,9DIV BLINC AHMOV DL,AHADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START8. 編兩個通過過程完成將 AX 中存放的二進制數轉換成壓縮型 BCD 碼以及將 BCD 碼轉換 成二進制數。答:(1)將AX中的二進制數先后除以1000,100和10,每次除法所得的商,即是 BCD數 的千位、百位和十位數,余數是個位數。子程序名: B2TOBCD輸入參數:AXh六位二進制數輸出參數:CF=O,則AX=4位壓縮型BCD碼。CF=1,則要轉換的數大于 9999 , AX
30、不 變。使用寄存器:CX:存放除數,DX:存放中間結果。B2TOBCD PROC FARCMP AX,9999 ; AX>9999,貝U CF 置 1JBE TRANSTCJMP EXITTRAN: PUSH CXPUSH DXSUB DX,DX ; DX 清 OMOV CX,1OOO ;計算千位數DIV CXXCHG AX,DX ;商在 DX 中,余數在 AX 中MOV CL,4SHL DX,CL ; DX 左移 4 位MOV CL,1OO ;計算百位數DIV CLADD DL,AL ;百位數加到 DL 中, DX 左移 4 位MOV CL,4SHL DX,CLXCHG AL,AH ;
31、余數保留在 AL 中SUB AH,AHMOV CL,1O ;計算十位數DIV CLADD DL,AL ;十位數加到 DL 中, DX 左移 4 位MOV CL,4SHL DX,CLADD DL,AH ;加個位數MOV AX,DX ;結果送到 AX 中POP DXPOP CXEXIT: RETB2TOBCD ENDP(2)將 AX 中 4 位 BCD 碼順序乘以 1OOO, 1OO, 1O 和 1 ,然后求和即得。子程序名: BCDTOB2輸入參數: AX=4 位壓縮 BCD 碼輸出參數:AXh六位二進制數使用寄存器:BX:暫存數據,CX:存放乘數,DX:存放中間結果BCDTOB2 PROC F
32、ARPUSH BXPUSH CXPUSH DXMOV BX,AXMOV CL,4ROL AX,CLAND AX,OOOFHMOV CX,1OOO ;乘以 1OOOMUL CXMOV DX,AXMOV 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
33、. 編寫兩個通用過程,一個完成 ASCII 碼轉換成二進制數功能,另一個完成 ASCII 字符顯 示輸出功能。答:( 1)將 AX 中兩位 ASCII 碼先轉化成數字,然后 AH*10+AL。子程序名: ASCIITOB2輸入參數: AX=2 位 ASCII 碼輸出參數:AX換后二進制數使用寄存器: 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 DXP
34、OP CXPOP BXRETASCIITOB2 ENDP(2)使用 2 號 DOS 功能調用顯示字符。子程序名: DISPLAY輸入參數: AX=2 位 ASCII 碼輸出參數:無使用寄存器: BX,DXDISPLAY PROC FARPUSH BXPUSH DXMOV BX,AXMOV DL,AHMOV AH,2INT 21HMOV AX,BXMOV DL,ALMOV AH,2INT 21HPOP DXPOP BXRETDISPLAY ENDP10. 編制兩個通用過程,完成十六進制數轉換成 ASCII 碼并將 ASCII 碼字符顯示 答:( 1)子程序名: HEXTOASC輸入參數: AX:
35、 4 位十六進制數輸出參數:DX,AX: 4位ASCII碼,DX高2位,AX低2位使用寄存器: BX,CX,DXHEXTOASC PROC FARPUSH BXPUSH CXPUSH DXMOV BX,AXMOV CL,4 ;轉換 AH 高 4 位SHR AX,CLAND AX,0F00HADD AH,30HCMP AH,3AHJB A1ADD AH,7A1: MOV DH,AHMOV AX,BX ;轉換 AH 低 4 位AND AX,0F00HADD AH,30HCMP AH,3AHJB A2ADD AH,7A2: MOV DL,AHMOV BH,BL ;轉換 AL 高 4 位MOV CL,
36、4SHR BL,CLADD BL,30HCMP BL,3AHJB A3ADD BL,7A3: MOV AH,BLAND BH,0FH ;轉換 AL 低 4 位ADD BH,30HCMP BH,3AHJB A4ADD BH,7A4: MOV AL,BHPOP DXPOP CXPOP BXRETHEXTOASC ENDP( 2)子程序名: DISPLAYASC 輸入參數: DX, AX:4 位 ASCII 碼 輸出參數:無 使用寄存器: BX,CX DISPLAYASC PROC FARPUSH BXPUSH CXMOV BX,DXMOV CX,AXMOV DL,BHMOV AH,02HINT 2
37、1HMOV DL,BLINT 21HMOV DL,CHINT 21HMOV DL,CLINT 21HMOV DL,' H'INT 21HPOP CXPOP BXRETDISPLAYASC ENDPP011. 某程序可從鍵盤接收命令(05),分別轉向6個子程序,子程序入口地址分別為 P5,編制程序,用跳轉表實現分支結構。答: DATA SEGMENTTABLE DW 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI, TABLEMOV WORD PTRSI,OF
38、FSET P0MOV WORD PTRSI+2,OFFSET P1MOV WORD PTRSI+4,OFFSET P2MOV WORD PTRSI+6,OFFSET 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 的數組中按遞增次序存放著 100 個 16 位補碼數,編寫一個
39、程序,把 出現次數最多的數及其出現次數分別存放于 AX 和 BL 中。答: DATA SEGMENTTABLE DW 100 DUP (?) ;數組中的數據是按增序排列的NUM DW ?COUNT DW 0DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS: CODE, DS: DATASTART: PUSH DS ;設置返回 DOSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AX ;給 DS 賦值BEGIN: MOV CX, 100 ;循環計數器MOV SI, 0NEXT: MOV DX, 0MOV AX, TABLESICO
40、MP: CMP TABLE SI, AX ;計算一個數的出現次數JNE ADDRINC DXADD SI, 2LOOP COMPADDR: CMP DX, COUNT ;此數出現的次數最多嗎?JLE DONEMOV COUNT, DX ;目前此數出現的次數最多,記下次數MOV NUM, AX ;記下此數DONE: LOOP NEXT ;準備取下一個數MOV CX, COUNT ;出現最多的次數存入 (CX)MOV AX, NUM ;出現最多的數存入 (AX)RETMAIN ENDPCODE ENDS ;以上定義代碼段END START13. 將鍵盤上輸入的十六進制數轉換成十進制數,在屏幕上顯示
41、。答: DATA SEGMENTSTRING DB 'INPUT 4 HEX NUM:',0AH,0DH,'$'NUM DB 10 DUP(?)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,
42、39;F'JA D1CMP AL,'A'JB A1SUB AL,7A1: SUB AL,30HMOV AH,0ADD DX,AXDEC BPJNZ CONTMOV SI,0 ;將DX轉換成十進制數,再轉換成 ASCII碼>NUMMOV AX,DXMOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SICMP AX,0JZ EXITMOV DX,0JMP D2EXIT: MOV DL,0AH ;顯示十進制數MOV AH,2INT 21HMOV DL,0DHINT 21HD3: DEC SIMOV DL,NUMSI
43、MOV AH,2INT 21HJNZ D3MOV AH,4CHINT 21HCODE ENDSEND START14. 將 AX 中的無符號二進制數轉換成 ASCII 字符串表示的十進制數。答:將 13 題輸入過程和輸出過程去掉即得。DATA SEGMENTNUM DB 10 DUP(?) ;轉換后 ASCII 碼按倒序存放于 NUMDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX, XXXX ;無符號二進制數MOV SI,0 ;將 AX 轉換成十進制數,再轉換成 ASCII 碼 >N
44、UM MOV DX,0MOV BX,10D2: DIV BXADD DL,30HMOV NUMSI,DLINC SICMP AX,0JZ EXITMOV DX,0JMP D2EXIT: MOV AH,4CHINT 21HCODE ENDSEND START15. 從鍵盤輸入 20 個有符號數,將它們排序并在屏幕上顯示。 答: DATA SEGMENTNUM DW 20 DUP(?) ;存放 20 個有符號數ASC DB 10 DUP(?) ;輸出時暫時保存每一個數的 ASCII 碼 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX
45、,DATAMOV DS,AXMOV CX,20MOV BX,10MOV SI,0MOV BP,0BEGIN: MOV DX,0 ;輸入 20 個有符號數(十進制),并A1: MOV AH,1 ;轉化為二進制數存放于 NUM 數組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,AX
46、JMP A1A2: CMP BP,1JNZ A5NEG DX ;若為負數,則取負A5: MOV NUMSI,DXMOV BP,0ADD SI,2LOOP BEGINMOV DL,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HMOV BX,0 ;對 20 個有符號數按由小到大順序排序MOV CX,19 ;采用冒泡法,排序后依然存放于 NUM 數組L1: MOV DX,CXL2: MOV AX,NUMBXCMP AX,NUMBX+2JLE CONT1XCHG AX,NUMBX+2MOV NUMBX,AXCONT1: ADD BX,2LOOP L2MOV CX,D
47、XMOV BX,0LOOP L1MOV CX,20 ;將 20 個有符號數(二進制)轉換為十進制數MOV SI,0 ;再轉換為 ASCII 碼并輸出屏幕D1: MOV AX,NUMSIADD 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
48、 DIJNZ D3MOV DL,' 'MOV AH,2INT 21HLOOP D1MOV AH,4CH ;返回 DOSINT 21HCODE ENDSEND START16. 編寫多字節有符號數的加法程序,從鍵盤接收兩個加數,在屏幕上顯示結果。答: DATA SEGMENTSTRING1 DB 'INPUT FIRST NUM(HEX):',0DH,0AH,'$'STRING2 DB 'INPUT SECOND NUM(HEX):',0DH,0AH,'$'STRING3 DB 'THE RESULT IS(
49、HEX):',0DH,0AH,'$'NUM1 DW 0,0 ;存放加數 1NUM2 DW 0,0 ;存放加數 2RESULT DB 0,0,0,0 ;存放結果DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,STRING1 ;輸入第一個加數( 4 位十六進制數)MOV AH,9INT 21HMOV SI,2MOV CX,8CONT: PUSH CXCMP CX,4JNZ B1SUB SI,2B1: MOV CL,4SHL NUM1SI,CLC1: MOV AH,1IN
50、T 21HCMP AL,'0'JB C1CMP AL,'F'JA C1CMP AL,'A'JB A1SUB AL,7A1: SUB AL,30HMOV AH,0ADD NUM1SI,AXPOP CXLOOP CONTMOV DL,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HLEA DX,STRING2 ;輸入第二個加數( 4 位十六進制數)MOV AH,9INT 21HMOV SI,2MOV CX,8CONT1: PUSH CXCMP CX,4JNZ B2SUB SI,2B2: MOV CL,4SHL NUM
51、2SI,CLC2: MOV AH,1INT 21HCMP AL,'0'JB C2CMP AL,'F'JA C2CMP AL,'A'JB A2SUB AL,7A2: SUB AL,30HMOV AH,0ADD NUM2SI,AXPOP CXLOOP CONT1MOV DL,0DH ;回車換行MOV AH,2INT 21HMOV DL,0AHINT 21HLEA SI,NUM1 ;兩數相加LEA BX,NUM2LEA DI,RESULTMOV CX,4CLCAD: MOV AL,SIADC AL,BXMOV DI,ALINC SIINC BXINC
52、DILOOP ADLEA DX,STRING3 ;顯示結果( 4 位十六進制數)MOV AH,9INT 21HMOV CX,4MOV DI,3TT: PUSH CXMOV DL,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
53、START17. 編寫 2 位非壓縮型 BCD 碼相乘的程序。 答:轉化成加法進行累加運算。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 ;計算加法次數MOV BL,10MUL BLMOV BL,DA2MOV BH,0ADD AX,BXMOV CX,AXCONT: MOV AH,0 ;通過循環做累加MOV AL,RESULTADD AL,DA1AAAMOV RESULT,ALMOV AL,RESULT+1ADD AL,AHMOV AH,0AAAADD AL,DA1+1AAAMOV RESULT+1,ALMOV AL,RESULT+2ADD AL,AHMOV AH,0AAAMOV RESULT+2,A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年試驗檢測師之道路工程通關提分題庫及完整答案
- 2017年廣東省中考數學試卷(含解析版)
- 2025《工程承包合同》
- 財務數據保密管理計劃
- 適應市場變化的管理策略計劃
- 2025建筑工程承包合同安全生產附件
- 個人入股建筑公司合同樣本
- 人工帶料合同范例
- 2025出口退稅賬戶托管借款合同范本
- 確立班級學習核心價值觀的計劃
- 專項報告模板
- 《風的形成》參考課件
- 老年衰弱護理課件
- 個人所得稅自行納稅申報表
- 物業車位申請表
- 植物標本的采集和制作
- 酒店住宿水單模板1
- 保利幕墻工程技術標述標課件
- 體育50米快速跑教案9篇
- 大學美育PPT(專本通用)全套完整教學課件
- 上海市長寧區2022屆初三中考二模英語試卷+答案
評論
0/150
提交評論