宋人杰版匯編語言程序設(shè)計課后習(xí)題解答_第1頁
宋人杰版匯編語言程序設(shè)計課后習(xí)題解答_第2頁
宋人杰版匯編語言程序設(shè)計課后習(xí)題解答_第3頁
宋人杰版匯編語言程序設(shè)計課后習(xí)題解答_第4頁
宋人杰版匯編語言程序設(shè)計課后習(xí)題解答_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、匯編語言程序設(shè)計(宋人杰 主編)課后習(xí)題解答第1章 匯編語言基礎(chǔ)知識1簡述匯編語言源程序、匯編程序、和目標(biāo)程序的關(guān)系。答:用匯編語言編寫的程序稱為匯編源程序;匯編源程序在匯編程序的翻譯下轉(zhuǎn)換成計算機語言變成目標(biāo)程序。2. 簡述匯編語言的優(yōu)缺點。答:(1) 匯編語言的優(yōu)點: 可有效地訪問、控制計算機各種硬件設(shè)備,如磁盤、存儲器、CPU、I/O端口等。. 目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。 可與高級語言配合使用,應(yīng)用十分廣泛。(2) 匯編語言的缺點: 通用性和可移植性較差 相對于高級語言來說較繁鎖、易出錯、不夠直觀。3CPU的尋址能力為8KB,那么它的地址總線的寬度為多少

2、?答:134. 1KB的存儲器有多少個存儲單元?答:1024個字節(jié)。5. 指令中的邏輯地址由哪兩部分組成?答:指令中的邏輯地址由段基址和偏移量組成。6. 以下為用段基址:偏移量形式表示的內(nèi)存地址,試計算它們的物理地址。(1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH7. 自12FA:0000開始的內(nèi)存單元中存放以下數(shù)據(jù)(用十六進(jìn)制形式表示): 03 06 11 A3 13 01,試分別寫出12FA:0002的字節(jié)型數(shù)據(jù)、字型數(shù)據(jù)及雙字型數(shù)據(jù)的

3、值。答: 字節(jié)型數(shù)據(jù):11H 字型數(shù)據(jù):0A311H 雙字型數(shù)據(jù):0113A311H8. 內(nèi)存中某單元的物理地址是19318H,段基地址為1916H,則段內(nèi)偏移地址為多少?若段內(nèi)偏移地址為2228H,則段基地址為多少?答:若段基地址為1916H,則段內(nèi)偏移地址為01B8H;若段內(nèi)偏移地址為2228H,則段基地址為170FH9. 在實模式環(huán)境中,一個段最長不能超過多少字節(jié)?答:64KB10. 實模式可尋址的內(nèi)存范圍是多少?答:1MB第2章 匯編語言源程序格式1請解釋變量和標(biāo)號的含義,兩者有何區(qū)別?答:標(biāo)號代表一條指令所在單元的地址,在代碼段中定義;變量是存放數(shù)據(jù)的存儲單元的地址符號名,在除代碼段

4、以外的其他段中定義。變量和標(biāo)號的主要區(qū)別在于變量指的是數(shù)據(jù),而標(biāo)號則對應(yīng)的是指令。2. 變量和標(biāo)號有什么屬性?答:都具有三種屬性:段屬性、偏移屬性和類型屬性3. 偽指令語句與指令語句的區(qū)別是什么?偽指令有什么用途?答:偽指令并不像指令語句那樣在程序運行期間由計算機自動執(zhí)行,而是在匯編程序?qū)υ闯绦騾R編期間由匯編程序處理的操作。偽指令可以完成如處理器選擇、定義程序模塊、數(shù)據(jù)定義、存儲區(qū)分配、指示程序開始和結(jié)束等功能。4. 數(shù)值返回運算符有哪幾種?簡述LENGTH和SIZE的區(qū)別。答:數(shù)值返回運算符包括:SEG(取段地址)、OFFSET(取偏移地址)、TYPE(取類型值)、LENGTH(取長度)、S

5、IZE(取總字節(jié)數(shù))。對于變量中使用DUP的情況,LENGTH回送分配給該變量的單元數(shù),對于其他情況則送1;而SIZE會送分配給變量的總字節(jié)數(shù),也就是LENGTH和TYPE的乘積。5. 畫圖說明下列偽指令所定義的數(shù)據(jù)在內(nèi)存中的存放形式。 (1) ARR1 DB 6,34H,-7 (2) ARR2 DW 3C5DH,1,? (3) ARR3 DB 2 DUP(1,2,DUP(2,5),3) (4) ARR4 DB HELLO (5) ARR% DB 1234答:(1) 見題圖2.1題圖2.1 (2) 見題圖2.2題圖2.2 (3) 見題圖2.3題圖2.3 (4) 見題圖2.4題圖2.4 (5)

6、題圖2.5題圖2.56. 寫出下列變量定義語句。(1) 為緩沖區(qū)BUF1預(yù)留20B的存儲空間。(2) 將字符串ABCD,1234存放于BUF2存儲區(qū)中。答: (1) BUF1 DB 20 DUP(?) (2) BUF2 DB ABCD DB 12347. 符號定義語句如下: BUF DB 2,3,4,5,345 EBUF DB 8 LT DB EQU EBUF-BUF 問LT的值是多少?答:LT的值為78. 假設(shè)程序中的數(shù)據(jù)定義如下: A DW ? B DB 16 DUP(?) C DD ? T EQU $-A 問T的值是多少?它表示什么意義?答:T的值是22;它表示從變量A到T之間分配的存儲

7、空間(字節(jié))數(shù)目。9. 如何規(guī)定一個程序執(zhí)行的開始位置?主程序執(zhí)行結(jié)束應(yīng)該如何返回DOS?源程序在何處停止匯編過程?答:程序開始位置:END偽指令后的標(biāo)號所對應(yīng)的地址;應(yīng)用程序開始偽指令.STARTUP處。 返回DOS:RET指令結(jié)合PUSH DS等指令;用DOS功能調(diào)用的第4CH號中斷;.EXIT偽指令。 END偽指令處停止匯編過程。10.EQU偽指令與“=”偽指令有何區(qū)別?答:在同一程序中,“=”偽指令可對一個符號重復(fù)定義11.指出下列偽指令表達(dá)方式的錯誤,并改正之。 (1) DATA SEG (2) SEGMENT CODE (3) MYDATA SEGMENT DATA ENDS (4

8、) MAIN PROC FAR END MAIN MAIN ENDP答:(1) SEG改為SEGMENT (2) 沒有段名 (3) DATA ENDS改為MYDATA ENDS (4) END MAIN刪除第3章 8086/8088尋址方式及指令系統(tǒng)1什么是尋址方式,8086/8088微處理器有幾種尋址方式,各類尋址方式的基本特征是什么?答:尋址方式就是尋找指令中操作數(shù)的方式,或?qū)ふ抑噶钷D(zhuǎn)移目的地址的方式。 8086/8088微處理器的尋址方式分為數(shù)據(jù)尋址方式和程序轉(zhuǎn)移尋址方式。數(shù)據(jù)尋址方式主要包括立即數(shù)尋址方式、寄存器尋址方式、直接尋址方式、寄存器間接尋址方式、寄存器相對尋址方式、基址變址尋

9、址方式和相對基址變址尋址方式;程序轉(zhuǎn)移尋址方式主要包括段內(nèi)直接尋址、段內(nèi)間接尋址、段間直接尋址、段間間接尋址。立即數(shù)尋址:操作數(shù)就在指令中,作為指令的一部分,跟在操作碼后存放在代碼段。寄存器尋址:操作數(shù)在寄存器中,指令中指定寄存器號。直接尋址方式:操作數(shù)在存儲器中,指令直接包含操作數(shù)的有效地址EA。寄存器間接尋址:操作數(shù)在存儲器中,操作數(shù)的有效地址在SI,DI,BX,BP這4個寄存器之一中。寄存器相對尋址:操作數(shù)在存儲器中,操作數(shù)的有效地址是一個基址寄存器(BX,BP)或變址寄存器(SI,DI)的內(nèi)容加上8位或16位的位移之和?;纷冎穼ぶ罚翰僮鲾?shù)在存儲器中,操作數(shù)的有效地址是一個基址寄存器(

10、BX,BP)加上變址寄存器(SI,DI)的內(nèi)容。相對基址變址尋址:操作數(shù)在存儲器中,操作數(shù)的有效地址是一個基址寄存器(BX,BP)和變址寄存器(SI,DI)的內(nèi)容加上8位或16位的位移之和。段內(nèi)直接尋址:轉(zhuǎn)向的有效地址是當(dāng)前IP寄存器的內(nèi)容和指令中指定的8位或16位位移量之和。段內(nèi)間接尋址:轉(zhuǎn)向的有效地址是一個寄存器或是一個存儲單元的內(nèi)容。段間直接尋址:在指令中直接提供了轉(zhuǎn)向段地址和偏移地址。段間間接尋址:用存儲器里的兩個相繼字的內(nèi)容來取代IP和CS寄存器中的原始內(nèi)容,以達(dá)到段間轉(zhuǎn)移的目的。2. 假定(DS)=1000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,變量T

11、ABLE的偏移地址為0100H,試指出下列指令的源操作數(shù)字段的尋址方式,它的有效地址(EA)和物理地址(PA)分別是多少? (1) MOV AX,1234H (2) MOV AX,TABLE (3) MOV AX,BX+100H (4) MOV AX,TABLEBPSI答:(1) 直接尋址,EA=1234H,PA=11234H (2)直接尋址,EA=0100H,PA=10100H (3) 寄存器相對尋址,EA=0140H,PA=10140H(4)相對基址變址尋址,EA=0195H,PA=10195H3. 若TABLE為數(shù)據(jù)段0032單元的符號名,其中存放的內(nèi)容為1234H,試問下列兩條指令有什

12、么區(qū)別?執(zhí)行完指令后,AX寄存器的內(nèi)容是什么? MOV AX,TABLE LEA AX,TABLE答:第一條指令是取0032單元的內(nèi)容,執(zhí)行完后AX的內(nèi)容是1234H 第二條指令是取TABLE的偏移地址,執(zhí)行完后AX的內(nèi)容為0032H4. 指出下列指令的錯誤。(1) MOV CX,DL (2) MOV IP,AX (3) MOV ES,1234H (4) MOV ES,DS (5) MOV AL,300H (6) MOV SP,AX (7) MOV AX,BX+DI (8) MOV 20H,AH答:(1) 兩操作數(shù)長度不一致 (2) 目的操作數(shù)不能為IP (3) 立即數(shù)不能直接送段寄存器 (4

13、) 兩個段寄存器之間不能直接進(jìn)行數(shù)據(jù)傳送 (5) 兩操作數(shù)長度不一致 (6) SP不能用作間址寄存器 (7) BX+DI改為BXDI或BX+DI (8) 目的操作數(shù)不能為立即數(shù)5. 指出下列指令的錯誤。(1) POP CS(2) SUB SI,DI(3) PUSH AH(4) ADC AX,DS(5) XCHG SI,30H(6) OUT DX,AH(7) IN AL,3FCH (8) MUL 5答:(1) POP指令不允許使用CS (2) 兩操作數(shù)不能同時是存儲器尋址方式 (3) 堆棧的操作必須以字為單位 (4) 段寄存器不允許直接參加運算 (5) XCHG指令的操作數(shù)不允許是立即數(shù) (6)

14、 OUT指令只能用AL做源操作數(shù) (7) 端口號大于255,必須將其放到DX中 (8) MUL指令源操作數(shù)不允許是立即數(shù)6. 請分別用一條匯編語言指令完成如下功能。 (1) 把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。 (2) 用寄存器BX和SI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL中。 (3) 用BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和CX寄存器的內(nèi)容相加,并把結(jié)果送回存儲器中。 (4) 把數(shù)0A0H與AL寄存器的內(nèi)容相加,并把結(jié)果送回AL中。答:(1)ADD DX,BX (2)ADD AL,BX+SI (3)ADD BX

15、+0B2H,CX (4)ADD AL,0A0H7. 求出以下各十六進(jìn)制數(shù)與十六進(jìn)制數(shù)58B0之和,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1) 1234H(2) 5678H(3) 0AF50H (4) 9B7EH答:(1)和為6AE4H,SF=0,ZF=0,CF=0,OF=0 (2)和為0AF28H,SF=1, ZF=0, CF=0, OF=1 (3)和為0800H, SF=0, ZF=0, CF=1, OF=0 (4)和為0F42EH, SF=1, ZF=0, CF=0, OF=08. 執(zhí)行指令A(yù)DD AL,72H前,(AL)=8EH,標(biāo)志寄存器的狀態(tài)標(biāo)志OF、SF、ZF、AF、P

16、F和CF全為0,指出該指令執(zhí)行后標(biāo)志寄存器的值。答:指令執(zhí)行后,AL的內(nèi)容為0000000H,且有進(jìn)位,標(biāo)志寄存器中各標(biāo)志位的值為:OF=0,SF=0,ZF=1,AF=1,PF=1,CF=19. 已知程序段如下: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX 試問:1、每條指令執(zhí)行完后,AX的內(nèi)容是什么?2、每條指令執(zhí)行完后,CF、SF和ZF的值是什么?3、程序執(zhí)行完后,AX和DX的內(nèi)容是什么?答:(1)(2)MOV AX,1234H ; (AX)=1234H,各標(biāo)志位不變MOV CL,4 ; (AX)=1234H,各標(biāo)志位不變R

17、OL AX,CL ; (AX)=2341H,CF=1,其它標(biāo)志位不變DEC AX ; (AX)=2340H,CF不變,SF=0,ZF=0MOV CX,4 ; (AX)=2340H,各標(biāo)志位不變MUL CX ; (AX)=8D00H,CF=0,ZF=0,SF=0(3) 程序執(zhí)行完后,(AX)=8D00H,(DX)=0000H10. 編程序段,將AL、BL、CL、DL相加,結(jié)果存在DX中。答:MOV AH,0ADD AL,BLADC AH,0ADD AL,CLADC AH,0ADD AL,DLADC AH,0MOV DX,AX11. 編程序段,從AX中減去DI,SI和BP中的數(shù)據(jù),結(jié)果送BX。答:

18、SUB AX,DISUB AX,SISUB AX,BPMOV BX,AX12. 假設(shè)(BX)=0E3H,變量VALUE中存放的內(nèi)容為79H,確定下列各指令單獨執(zhí)行后的結(jié)果。 (1) OR BX,VALUE (2) AND BX,VALUE (3) XOR BX,OFFH (4) AND BX,01H (5) TEST BX,05H(6) XOR BX,VALUE答: (1) (BX)=0FBH(2) (BX)=61H(3) (BX)=1CH(4) (BX)=01H(5) (BX)=0E3H (6) (BX)=9AH13. 已知數(shù)據(jù)段500H600H處存放了一個字符串,說明下列程序段執(zhí)行后的結(jié)果

19、。MOV SI,600HMOV DI,601HMOV AX,DSMOV ES,AXMOV CX,256STDREP MOVSB答:將數(shù)據(jù)段501H600H中存儲的字符串移到數(shù)據(jù)段502601H中14. 說明下列程序段的功能。CLDMOV AX,0FEFHMOV CX,5MOV BX,3000HMOV ES,BXMOV DI,2000HREP STOSW答:將附加段的32000H開始的連續(xù)5個字初始化為0FEFH15. 判斷下列程序段跳轉(zhuǎn)的條件。 (1) XOR AX,1E1EH JE EQUAL (2) TEST AL,10000001B JNZ THERE (3) CMP CX,64H JB

20、 THERE答:(1) AX中的值為1E1EH時會跳轉(zhuǎn)(2) AL的最低和最高位至少有一位為1時發(fā)生跳轉(zhuǎn)(3) CX中的值小于64H時發(fā)生跳轉(zhuǎn)16. 選取正確指令,完成以下任務(wù)。 (1) 右移DI三位,并將0移入最左一位。(2) AL內(nèi)容左移一位,0移入最后一位。(3) DX寄存器右移一位,并且使結(jié)果的符號位與原符號位相同。答:(1) MOV CL,3 SHR DI,CL(2) SHL AL,1(3) SAR DX,117. 假設(shè)AX和SI存放的是有符號數(shù),DX和DI存放的是無符號數(shù),請用比較指令和條件轉(zhuǎn)移指令實現(xiàn)以下判斷。 (1) 若DX>DI,轉(zhuǎn)到ABOVE執(zhí)行(2) 若AX>

21、SI,轉(zhuǎn)到GREATER執(zhí)行。 (3) 若CX=0,轉(zhuǎn)到ZERO執(zhí)行(4) 若AX-SI產(chǎn)生溢出,轉(zhuǎn)到OVERFLOW執(zhí)行。 (5) 若SIAX,轉(zhuǎn)到LESS_EQ執(zhí)行。(6) 若DIDX,轉(zhuǎn)到BELOW_EQ執(zhí)行。答:(1) CMP DX,DI JA ABOVE(2) CMP AX,SI JG GREATER(3) CMP CX,0 JE ZERO(4)CMP AX,SIJO OVERFLOW(5) CMP AX,SIJGE LESS_EQ(6) CMP DX,DIJAE BELOW_EQ18. 有一個首地址為ARRAY的20個字?jǐn)?shù)組,說明下列程序段的功能。 MOV CX,20 MOV AX

22、,0 MOV SI,AXSUM_LOOP: ADD AX,ARRAYSI ADD SI,2 LOOP SUM_LOOP MOV TOTAL,AX答:將首地址為ARRAY的20個字?jǐn)?shù)組元素求和,將結(jié)果存放到TOTAL單元22. 已知內(nèi)存中起始地址為BLOCK的數(shù)據(jù)塊(字節(jié)數(shù)為COUNT)的字節(jié)數(shù)據(jù)有正有負(fù)。試編寫一個程序,將其中的正、負(fù)分開,分別送至同一段中的兩個緩沖區(qū),設(shè)正、負(fù)緩沖區(qū)的首地址分別為PLUS和MINUS。答: DATA SEGMENT BLOCK DB 16 DUP(?) PLUS DB 16 DUP(?) MINUS DB 16 DUP(?) DATA ENDS CODE SE

23、GMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS MOV BX,OFFSET MINUS MOV CX,COUNT NEXT:MOV AL,SI TEST AL,80H JNZ MD MOV DI,AL INC DI JMP AGAIN MD: MOV BX,AL INC BX AGAIN: INC SI LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START19. 按照下列要求,編寫相應(yīng)的程序段。 (1) 已知

24、字符串STRING包含有32KB內(nèi)容,將其中的“$”符號替換成空格。 (2) 有一個100個字節(jié)元素的數(shù)組,其首地址為ARRAY,將每個元素減1(不考慮溢出)存于原處。 (3) 統(tǒng)計以“$”結(jié)尾的字符串STRING的字符個數(shù) (4) 假設(shè)從B800H:0開始存放有16個16位無符號數(shù),編程求它們的和,并把32位的和保存在DX、AX中。答:(1) MOV SI,0 MOV CX,8000H AGAIN:CMP STRINGSI,$ JNZ NEXT MOV STRINGSI,20H NEXT:INC SI LOOP AGAIN(2)MOV SI,0MOV CX,100 AGAIN:DEC ARR

25、AYSI INC SI LOOP AGAIN(3)XOR SI,SI COMP:CMP STRINGSI,$ JE OVER INC SI JMP COMP OVER:RET(4) MOV AX,0B800H MOV DS,AX XOR SI,SI XOR DX,DX MOV CX,0FH MOV AX,SI AGAIN:INC SI INC SI ADD AX,SI JNC NEXT INC DX NEXT:LOOP AGAIN RET 20. 編寫程序,把ARRAY1和ARRAY2中20個字節(jié)數(shù)分別相加,結(jié)果放到TABLE中。 (1) 假定數(shù)據(jù)為無符號數(shù),如果結(jié)果大于255則結(jié)果為255。

26、 (2) 假定結(jié)果為帶符號數(shù),如果有溢出則保存結(jié)果為0。答:(1) DATA SEGMENT ARRAY1 DB 20 DUP(?) ARRAY2 DB 20 DUP(?) TABLE DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,20 MOV SI,0 AGAIN:MOV AL,ARRAY1SI ADD AL,ARRAY2SI JC LABEL1 MOV TABLESI,AL JMP LABEL2 LABEL1:MOV TABLESI,255 LABE

27、L2:INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START (2) DATA SEGMENT ARRAY1 DB 20 DUP(?) ARRAY2 DB 20 DUP(?) TABLE DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,20 MOV SI,0 AGAIN:MOV AL,ARRAY1SI ADD AL,ARRAY2SI JO LABEL1 MOV TABLESI,AL JMP LABE

28、L2 LABEL1:MOV TABLESI,0 LABEL2:INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START 21. 字符串ATR1保存著100個字節(jié)的ASCII碼,試編寫一個程序統(tǒng)計該字符串中空格(20H)的個數(shù)。答: DATA SEGMENT ATR1 DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,100 XOR DI,DI XOR SI,SI COMP:CMP ATR1SI,20H

29、 INC SI JNE NEXT INC DI NEXT:LOOP COMP MOV AH,4CH INT 21H CODE ENDS END START第4章 順序、分支與循環(huán)程序設(shè)計1試編寫一個程序?qū)崿F(xiàn)將從鍵盤輸入的小寫字母用大寫字母形式顯示出來。答: DATA SEGMENT STRMESSAGE DB “請輸入小寫字符”,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRMESSAGE MOV AH,9H INT 21H MOV AH,

30、1 INT 21H MOV DL,AL SUB DL,20H MOV AH,2 INT 21H EXIT:MOV AH,4CH INT 21H CODE ENDS END START2在內(nèi)存BUFFER單元中定義有10個16位數(shù),試尋找其中的最大值及最小值,并放在指定的存儲單元MAX和MIN中。答: DATA SEGMENT BUFFER DW 10 DUP(?) MIN DW ? MAX DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUFFER MOV

31、 AX,BX MOV DX,BX MOV SI,0 MOV CX,10 MM:MOV DI,BX+SI CMP AX,DI JB T1 JMP T2 T1:CMP DX,DI JB T11 JMP T21 T11:MOV DX,DI T21:JMP ENT T2: MOV AX,DI ENT:ADD SI,2 LOOP MM MOV MAX,DX MOV MIN,AX MOV AH,4CH INT 21H CODE ENDS END START3統(tǒng)計字型變量DATBUF中有多少位0,多少位1,并分別記入COUNT0和COUNT1中。答: DATA SEGMENT DATBUF DW 1234H

32、 COUNT0 DB ? COUNT1 DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,DATBUF AGAIN:CMP BX,0 JE EXIT SHL BX,1 JNC ZERO INC COUNT1 JMP AGAIN ZERO:INC COUNT0 JMP AGAIN EXIT:MOV AH,4CH INT 21H CODE ENDS END START4在BUFFER開始的單元中存放著一個字符串,請判斷該字符串中是否存在數(shù)字,如有則將X單元置1,否則置0。答:

33、DATA SEGMENT BUFFER DB JAVA2COMPUTER N=$-BUFFER X DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX CLD MOV CX,N XOR SI,SI AGAIN:CMP BUFFERSI,39H JA NEXT CMP AL,30H JB NEXT MOV X,1 JMP EXIT NEXT:INC SI LOOP AGAIN MOV X,0 EXIT:MOV AH,4CH INT 21H CODE ENDS END START5設(shè)在變量單元

34、A1、A2、A3、A4中存放4個數(shù),試編程實現(xiàn)將最大數(shù)保留,其余3個數(shù)清零的功能。答: DATA SEGMENT A1 DB 3 A2 DB 7 A3 DB 9 A4 DB 8 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,3 MOV AL,A1SI MOV DI,0 NEXT:INC SI CMP AL,A1SI JNB NEXT1 MOV AL,A1SI MOV A1DI,0 MOV DI,SI JMP NEXT2 NEXT1:MOV A1SI,0 NEXT

35、2:LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START6已定義了兩個整數(shù)變量A和B,試編寫程序完成下列功能。(1) 若兩個數(shù)中有一個是奇數(shù),則將奇數(shù)存入A中,偶數(shù)存入B中(2) 若兩個數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量。(3) 若兩個數(shù)均為偶數(shù),則兩個變量均不改變。答: DATA SEGMENT A DB 13H B DB 24H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B XOR AL,BL TEST AL,01H JZ SAME TEST BL,01H JZ DONE XCHG BL,A MOV B,BL JMP DONE SAME:TEST BL,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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論