




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、您正在查看 "ibm-pc匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案" 分類下的文章IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著第三章答案1-222006-11-02 22:56IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著答案1。.(1立即尋址沒有(2直接尋址 7237H(3使用BX的寄存器尋址沒有(4使用BX的間接尋址 637DH(5使用BX的寄存器相對(duì)尋址 0D5F0H(6 基址變址尋址 8E18H(7相對(duì)基址變址 004FH2。根據(jù)下列要求,寫出相應(yīng)的匯編指令。(1ADD DX,BX(2 ADD A
2、L,BXSI(3 ADD BX0B2H, CX(4 MOV AX,2A59H ADD 0524H ,AX(5 ADD AL ,0B5H3。(1寄存器間接尋址MOV BX,OFFSET BLOCK0AHMOV DX ,BX(2寄存器相對(duì)尋址MOV SI,OAHMOV DX,BLOCKSI(3基址變址尋址MOV BX ,BLOCKMOV SI,OAHMOV DX,BXSI沒人來看,還是要寫4。現(xiàn)有(DS=2000H,(BX=0100H,(SI=0002H,(20100=12H,(20101=34H,(20102=56H,(20103=78H,(21200=2 AH,(20201=4CH,(2120
3、2=B7H,(21203=65H,試說明下列各條指令執(zhí)行完后,AX寄存器的內(nèi)容。(1MOV AX,1200H 1200H(2 MOV AX,BX 0100H(3 MOV AX,1200 4C2AH 注意,是字單元!(4MOV AX,BX 3412H 同上(5MOV 1100BX 4C2AH(6 MOV AX,BXSI 7856H(7 MOV AX,1100BXSI 65B7H5。(1 7CD9H (2 1200H (3 6319H6。 MOV BX,2000HLES DI ,BXMOV AX, ES:DI7。轉(zhuǎn)向地址OBJ的值分別為:(1064DH (20691H (305E0H 注意有符號(hào)數(shù)
4、的符號(hào)位8。(1 MOV AX,0ABH 立即數(shù)尋址無物理地址(2MOV AX,BX 寄存器尋址同上(3MOV AX,100 直接尋址20100H(4MOV AX,VAL 直接尋址20050H(5 MOV AX,BX 寄存器間接尋址20100H(6 MOV AX,ES:BX 直接尋址21100H(7 MOV AX,BP 寄存器間接尋址20010H(8MOV AX,SI 同上200A0H(9 MOV AX,BX+10 寄存器相對(duì)尋址20110H(10MOV AX,VALBX 同上20150H(11 MOV AX,BXSI 基址變址尋址201A0H(12 MOV AX,VALBXSI 相對(duì)基相變址
5、尋址201F0H9。(1的指令: MOV AX, BX0CH MOV ZREO ,AX(2 的指令: MOV AX,ARRAYBX MOV ZREO,AX10。 MOV AX,TABLE 是把符號(hào)地址TABLE里的內(nèi)容送到AX里,指令執(zhí)行完后,(AX=1234HLEA AX,TABLE 是把符號(hào)地址TABLE 的有效地址(這里是偏移量送到指定寄存器AX里,指令執(zhí)行完后,(AX=0032H11。執(zhí)行完指令后,(AX=1E00H12。 LEA AX,CSTRINGMOV DL,AXMOV DH,AX+613。這個(gè),圖,很麻煩了,所以就不畫了大家可以看一下課本上P51-P53,很清楚,看完了這道韙也
6、會(huì)了14。LES BX,2000MOV AX,ES:BX注意:一開始我寫的是: MOV AX,ES:8000H,后來看到題目里要求寫兩條指令,所以一條就不行了,就要畫蛇添足15。運(yùn)算結(jié)果 SF,ZF,CF,OF各位的值(從左至右依次往下(1 74D4H 0 0 0 0(2 A5C1H 1 0 0 1(3 4240 H 0 0 1 0(4 0000 H 0 1 1 016。接上表(1 5D14 0 0 0 0(2 A870 1 0 0 1(3 D870 1 0 0 0(4 34E4 0 0 1 017。(1.MOV AX,Z ;把Z送到AXSUB AX,X ;Z-XADD AX,W ;W+(Z-
7、XMOV Z,AX ;結(jié)果保存在Z中(2. MOV AX,R ;R送到AX中ADD AX,9 ;R+9MOV BX,X ;X送到BX中ADD BX,6 ;X+6ADD AX,BX ;(R+9+(X+6,結(jié)果保存在AX中MOV BX,W ; W送到BX中SUB BX,AX ; W-(R+9-(X+6,連續(xù)減去兩個(gè)數(shù),相當(dāng)于減去這兩個(gè)數(shù)的和MOV Z,BX ;最終結(jié)果送到Z中(3MOV AX,W ;把W送到AXIMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里MOV BX,Y ;把Y送到BX 里ADD BX,6 ;Y+6IDIV BX ;(W*X/(Y+6 注意:商保存在AX
8、里,余數(shù)保存在DX里MOV Z,AX ;把商送到Z中,MOV R,DX ;把余數(shù)送到R中(4MOV AX,W ;把W送到AX中SUB AX,X ;W-XCWD ;把AX中的十六位帶符號(hào)數(shù)擴(kuò)展成為32位,低十六位保存在AX 中,高十六位保;在DX中MOV BX,5 ;把5送到BX中IDIV BX ;(W-X/5 被除數(shù)為32位,除數(shù)為16位商為16位IMUL Y ;上一步結(jié)果再乖以Y,積為32位MOV BX,2 ;把2送到BX中IMUL BX ;上一步乘法所得的積再乘以2,各為64位MOV Z,EAX ;把結(jié)果中低32位放入Z雙字單元中MOV Z+4,EDX ;把結(jié)果中高32位放入Z+4雙字單元
9、中18。指令本條指令執(zhí)行完后AX的內(nèi)容執(zhí)行完后CF,SF,ZF的值MOV AX,1234H 1234H 0 0 0MOV CL,4 1234H 0 0 0ROL AX,CL 2341H 1 0 0DEC AX 2340H 1 0 0MOV CX,4 2340H 1 0 0MUL CX 8918H 0 0 0INT 20H程序結(jié)束后,(AX=8918H (DX=0000H19。指令執(zhí)行完后AX的內(nèi)容執(zhí)行完后CF ,SF,ZF和OF的值MOV AX,0 0 0010DEC AX FFFFH 0100ADD AX,7FFFH 7FFEH0000ADD AX,2 8000H 0101NOT AX 7F
10、FFH 0101SUB AX,0FFFFH 8000H1101ADD AX,8000H 0000H1011SUB AX,1 FFFFH 1101AND AX,58D1H 58D1H0000SAL AX,1 B1A2H 0101SAR AX,1 D8D1H 0100NEG AX 272FH 1000ROR AX,1 9397H 100120。(1MOV AX,DATAXADD DATAY,AX(2MOV AX,DATAXADD DATAY,AXMOV AX,DATAX+2ADD DATAY+2 ,AX(3本組指令的作用是:BX <-DATAX+DATAY+1(CF的值 帶進(jìn)位加法(4MOV
11、 AX,DATAXMUL DATAY ;結(jié)果的高十六位保存在DX裏,低十六位保存在AX裏(5MOV AX,DATAXMOV DX,DATAX+2MUL DWORD DATAY ;結(jié)果的高三十二位保存在EDX裏,低三十二位保存在EAX裏;這裏所用的DWORD為一屬性操作符,在第四章會(huì)學(xué)到(6MOV AX,DATAXDIV 17H ;結(jié)果商保存在AL中,余數(shù)在AH中(7MOV AX,DATAXCDWDIV DATAY21。NEG DXNEG AXSBB DX,022。MOV AX,A ;把雙字長數(shù)的低字放到AX中MOV DX,A+2 ;把雙字長數(shù)的高字放到DX中TEST DX,8000H ;測試雙
12、字長數(shù)的符號(hào)JZ RIGHT ;如果是非負(fù)數(shù),則直接保存NEG DX ;如果是負(fù)數(shù),則求補(bǔ)NEG AXSBB DX,0RIGHT: MOV B ,AXMOV B+2,DXIBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著第三章答案23-382006-11-02 22:58 IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案23。每條指令單獨(dú)執(zhí)行完後的結(jié)果依次為:(1 9AH (261H (30FBH (41CH (50 (60E3H24。執(zhí)行指令序列後,BX的內(nèi)容為:0DAH25。(1把53D乘以2的程序:MOV AX,35H ;53D=35HSHL AX ,1(
13、2把53除以2 的程序:MOV AX,35HSHR AX,1其他的同理26。這段程序完成的功能是:把DX:AX中的雙字?jǐn)?shù)據(jù)左移4位(相當(dāng)於乘以16D27。各條指令單獨(dú)執(zhí)行後,DX的值依次為:(1 5CH (217H (305C8H (472H (52017H (60CDH (70172H (805CCH(90DCH28。該程序段執(zhí)行完後,BX寄存器的內(nèi)容是:C02DH29。(1從左到右把CONMAE中的字符串偉送到PRLINE的程序?qū)崿F(xiàn):LEA SI,CONAME ;把CONAME中第一個(gè)字節(jié)的偏移地址送到SI中LEA DI,PRLINE ;把PRLINE中第一個(gè)字節(jié)的偏移地址送到DI中MOV
14、 CX,20 ;把重復(fù)次數(shù)放到CX里CLD ;讓SI DI從低地址指向高地址(即從左到右傳送REP MOVSB ;傳送(2從右到左把CONMAE中的字符串傳送到PRLINE中的程序?qū)崿F(xiàn):LEA SI ,CONAMELEA DI,PRLINEMOV CX,20STD ;和上面唯一不同的就是這次是從右到左,所以要從高地址批向低地址REP MOVSB(3把CONAME中的第三和第四個(gè)字節(jié)裝入AX的程序?qū)崿F(xiàn):LEA SI ,CONAME+3LODSW(4把AX寄存器的內(nèi)容存入從PRLINE+5開始的字節(jié)中的程序?qū)崿F(xiàn):LEA DI ,PRLINE+5STOSW(5檢查CONAME字符串中有無空格字符,如
15、有把它偉送給BH寄存器的程序?qū)崿F(xiàn):LEA DI,CONAME ;把CONAME中第一個(gè)字符偏移地址放入DI中MOV CX,20 ;把重複次數(shù)放到CX中MOV AL,20H ;把空格符的ASCII值放入AL中CLD ;從低到高REPNE SCASB ;比較MOV BH,DI-1R ;把檢查到的空格符送到BH中30。MOV CX,12H ;把重複次數(shù)放到CX中。這裏用十六進(jìn)制表示MOV SI,0 ;初始化SIMOV AX,26H ;把&字符的ASCII值放入AXCHECK: CMP AX,STRINGSI ;依次查找INC SILOOPNE CHECK ;找到了就退出MOV AX,20H
16、;把空格符的ASCII值勤放入AX中MOV STRINGSI-1,AX ;用空格符代替&31。(1用空格符清除PRINT_LINE域的程序?qū)崿F(xiàn):MOV AL,20HLEA DI ,PRINT_LINEMOV CX,132CLDREP STOSB(2在STUDENT_ADDR中查找第一個(gè)_的程序?qū)崿F(xiàn):MOV AX,2DH ;把“”的ASCII值放入AX MOV SI,0 ;初始化SIMOV CX,9 ;把重複次數(shù)放入CX中;依次檢查STUDENT-ADDR中的字符是否為"_",找到第一個(gè)停下來CHECK:CMP AX ,STUDENT_ADDRSI ;INC SILO
17、OPNZ CHECK(3在STUDENT_ADDR中查找最后一個(gè)”_“的程序?qū)崿F(xiàn):;和第二題不同的就是這次是從右到左查詢,所以SI的初始化為9MOV AX,2DHMOV SI ,9MOV CX,9CHECK :CMP AX,STUDENT_ADDRSIDEC SILOOPNZ CHECK(4程序?qū)崿F(xiàn):MOV AL,2OH ;把空格符的ASCII值放入AL中LEA DI ,STUDENT_NAME ;把STUDENT_NAME中第一個(gè)字符偏移地址放到DI中MOV CX,30 ;把重復(fù)次數(shù)放到CX中CLD ;讓DI從低位移到高位REPZ SCASB ;如果有不是空格符的,就退出JZ STORE ;
18、如果全是空格符,就轉(zhuǎn)到STORE中;用*代替空格STORE:MOV AL 2AHMOV CX ,30STD ;注意,這里是把前面從低到高移動(dòng)的DI再從高到低移上去REP STOSB(5程序?qū)崿F(xiàn):;把STUDENT_NAME 移到PRINT_LINE的前30個(gè)字節(jié)中LEA SI, STUDENT_NAMELEA DI,PRINT_LINEMOV CX ,30CLDREP MOVSB;把STUDENT_ADDR移到PRINT_LINE的后9個(gè)字節(jié)中LEA SI ,STUDENT_ADDR+9 LEA DI,PRINT_LINE+132 MOV CX,9STDREP MOVSB32。程序?qū)崿F(xiàn):。LE
19、A SI,OLDSLEA DI,NEWSMOV CX,5REPZ CMPSBJNZ NEW_LESS。33。(1CMP DX,CXJA EXCEED (2CMP BX,AXJG EXCEED(3CMP CX,0JZ ZERO(4CMP BX,AXJO OVERFLOW (5CMP BX,AXJLE EQ_SMA (6 CMP DX,CXJBE EQ_CX34。(1跳轉(zhuǎn)到:L1(2跳轉(zhuǎn)到L1(3跳轉(zhuǎn)到L2(4跳轉(zhuǎn)到L5(5跳轉(zhuǎn)到L535。(1可以引起轉(zhuǎn)移到L1的指令有: NB ,BE ,NL ,LE(2可以引起轉(zhuǎn)移到L1的指令有:同上(3可以引起轉(zhuǎn)移到L1的指令有: B,BE ,L , LE(4
20、可以引起轉(zhuǎn)移到L1的指令有: NB ,NBE ,NL ,NLE(5可以引起轉(zhuǎn)移到L1的指令有:同上(6可以引起轉(zhuǎn)移到L1的指令有:同(3(7可以引起轉(zhuǎn)移到L1的指令有:同上36。37。程序流程圖就不畫了,呵呵,程序如下MOV AL,STAUSSI ;把要測試的字節(jié)放到AL中AND AL,2AH ;把第一,三,五位為一其他位為0的數(shù)-2AH,與這個(gè)字節(jié)比較,結(jié)果;放到AL中JZ ROUTINE_4 ;如果結(jié)果為0,則三位都為0XOR AL,2AH ;前面相與的結(jié)果再與2AH異或JZ ROUTINE_1 ;如果結(jié)果為0,則三位都為1BSF BL,AL ;BSR BL ,ALCMP BL,CL;如果
21、向前和向后測試后,第一個(gè)1 的位置相同,說明只有一個(gè)1,則異或運(yùn)算前有AL中有兩個(gè)1 JE ROUTINE_2ROUTINE_1注:本題還有其他解法,請(qǐng)大家自己試試38。(1當(dāng)括號(hào)內(nèi)是:LOOP時(shí),循環(huán)四次,程序結(jié)束后(AX=05 (BX= 16 (CX=0 (DX=0(2當(dāng)括號(hào)內(nèi)是: LOOPE 時(shí),不循環(huán),程序結(jié)束后(AX=02 (BX=04 (CX=03 (DX=02(3當(dāng)括號(hào)內(nèi)是:LOOPNE 時(shí):循環(huán)三次,程序結(jié)束后(AX=04 (BX=11 (CX=01 (DX=0IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著第三章答案39-522006-11-
22、02 23:0239。圖,就不畫了,呵呵自己看一下課本,P10140.。(10000 3100H (25100H (37100H41。(1目的地址:2004H 內(nèi)容依次為: 56H F4H 23H 98H(2目的地址: 384CH 內(nèi)容依次為: 91H 34H F2H 01H(3目的地址:寄存器,無物理地址 內(nèi)容依次為:92H 6DH A2H 4CH 42。(1PUSH AX(SP<-(SP-2(SP+1<-(AH (SP<-(AL(2POP ESI(ESI<-(ESP+3,(ESP+2,(ESP+1, (ESP(ESP<-(ESP+4(3PUSH BX(SP&l
23、t;-(SP-2(SP+1<-(BX+1 (SP<-(BX(4 PUSHAD(ESP<-(EAX(ESP-4<-(ECX(ESP-8<-(EDX(ESP-12<-(EBX(ESP-16<-(ESP ;這里指的是指令執(zhí)行前的ESP (ESP-20<-(EBP(ESP-24<-(ESI(ESP-28<-(EDI(ESP<-(ESP-32(5POP DS(DS<-(SP+1,(SP(SP<-(SP+2(6 PUSH 4(SP<-(SP-2(SP+1<-0(SP<-443。(1 2CE FF93H (2 2
24、4B 76A0H(3909 0804H (4 6F 13ADH44。(10FFFF FFFCH (20FFFF FFF8H(30000 0007H (40000 0099H 45。(EAX=0 (EBX=25d46。(AX=3d (DX=7d47。ADD ECX,EDXADD ECX,ESIMOV EDI ,ECX48。 IMUL BX,DX,100H執(zhí)行的操作是:(BX<-(DX*100H49。程序?qū)崿F(xiàn):MOV AL,BLCBWIDIV CLIMUL 2MOV DX,AX50。JMP DI 是直接跳轉(zhuǎn),執(zhí)行的操作是:(IP<-(IP+(DIJMP DI是間接跳轉(zhuǎn),執(zhí)行的操作是:(
25、IP<-(IP+(DI跳轉(zhuǎn)到DI中所指向的內(nèi)存單元中的指令地址51。假設(shè)數(shù)組名為NUMBERS,程序如下MOV BX,0 ;后面用到MOV CX,100H ;把循環(huán)次數(shù)放入CXMOV AL,42HMOV SI,0 ;初始化SI;CHECK 用來實(shí)現(xiàn)查找功能CHECK : CMP AL ,NUMBERSSIINC SIJB STORE1 ;大于42H的數(shù)的個(gè)數(shù)存入U(xiǎn)PJA STORE2 ;小于42H的的數(shù)的個(gè)數(shù)存入DOWN中LOOP CHECK ;相等繼續(xù)循環(huán)STORE1 INC BL ;找到一個(gè)大于42 的數(shù),BL值增加1MOV UP,BLLOOP CHECKSTORE2 INC BHM
26、OV DOWN ,BHLOOP CHECK52。圖,也不用畫了呵呵好了,本章結(jié)束# #IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著第四章答案2006-11-04 21:591。指令下列指令的錯(cuò)誤(1 MOV AH,BX 源操作數(shù)與目的操作數(shù)長度不相同(2 MOV BX,SI 這是兩個(gè)內(nèi)存單元在傳遞數(shù)據(jù),而這在匯編語言中是不允許的(3 MOV AX,SIDI 不能用兩個(gè)變址連用,其中一個(gè)應(yīng)為基址(4 MOV MYDATBXSI,ES:AX 同(2(5 MOV BYTE PTRBX,1000 必須有一個(gè)為寄存器(6MOV BX,OFFSET MYDATSI O
27、FFSET 不能與復(fù)雜操作數(shù)相連(7MOV CS,AX 不能對(duì)CS賦值(8MOV ECX,AX 操作數(shù)類型不同2。(1合法(2非法(3非法(4非法3。(1非法,操作數(shù)類型不同(2合法(3非法,不允許兩個(gè)內(nèi)存單元直接傳遞數(shù)據(jù),你把人家CPU放哪了?呵(4合法(5合法(6合法(7非法,必須有一個(gè)寄存器把CPU放哪了?(8非法,兩個(gè)內(nèi)存單元地址相加沒有意義(9合法(10非法,同(34。(1兩內(nèi)存單元傳遞數(shù)據(jù)(2操作數(shù)類型不同(3跳轉(zhuǎn)指令只能跳轉(zhuǎn)到符號(hào)地址(4轉(zhuǎn)移指令后不能為變量,只能為標(biāo)號(hào)(5格式不對(duì),應(yīng)為 NEAR PTR 。5。圖,就不畫了6。(1DW 5150H(2MOV AX,5150HMO
28、V ADDRESS ,AX等,寫出幾個(gè)就可以7。DATASG SEGMENTFLD1B DB 'personal computer'FLD2B DB 10 DUP (32FLD3B DB 20HFLD4B DB 01011001BFLD5B DB '32654'FLD6B DB 10 DUP (0FLD7B DB 'PART1',DUP 20 (?,'PART2',DUP 50 (?,'PART3',DUP 14 (? FLD1W DW 0FFF0HFLD2W DW 01011001BFLD3W DW FLD7BF
29、LD4W DW 5,6,7,8,9FLD5W DW 5 DUP (0FLD6W DW (FLD6W-FLD1W-(FLD7B-FLD1B 8。PLENTH 的值為22,GE表示該數(shù)據(jù)段的長度9。L的值為710。(1MOV AX,OFFSET LNAME(2MOV SI,WORD PTR CODE_LIST(3CODE_LENGHT EQU $-CODE_LIST 11。代碼如下:DATA_SEG SEGMENTDB 5DATA_LIST DW 0FFFFH,0,2,5,4, 5 DUP (? DATA_SEG ENDSCODE_SEG SEGMENTASSUME CS:CODE_SEG,DS:
30、DATA_SEGMOV AX,5MOV MAX,AXMOV AX,0FFFFHMOV MIN,AXCODE_SEG ENDS12。(110025(219(32548(43(5103(60FFFFH(71(8313。分別匯編成為:MOV AX,0AHMOV BL,0AHMOV CL,114。(1(AX=1 (2(AX=2 (3(CX=14H (4(DX=32H (5(CX=1 15。(1操作符錯(cuò)誤改為: DATA_SEG SEGMENT(2缺少段名在前面加個(gè)段名(3引用應(yīng)該從;開始把那個(gè)“/”改成“;”(4結(jié)構(gòu)混亂改為:MAIN_PROC PROC FAR。MAIN_PROC ENDPEND16
31、。程序框架如下:DATA_SEG SEGMENT ;定義數(shù)據(jù)段ORG 0E000H ;讓下一字節(jié)地址為0E000HFIRST_TYPE EQU THIS WORD ;建立一個(gè)與下一存儲(chǔ)單元有相同段地址和偏移地址的操作數(shù)DATA_GROUP DB 100 DUP(? ;給DATA_GROUP 分配100個(gè)字節(jié)的空間DATA_SEG ENDS ;數(shù)據(jù)段結(jié)束STACK_SEG SEGMENT ;定義堆棧段ALIGN 16 ;讓下一字節(jié)從小段首地址開始STACK DB 100 DUP (? ;為堆棧分配空間STACK_SEG ENDS ;CODE_SEG SEGMENTASSUME CS:CODE_S
32、EG ,DS:DATA_SEG ,SS:STACK_SEGORG 1000H ;讓下條指令的第一個(gè)字節(jié)從1000H開始START : MOV AX,DATA_SEGMOV DS,AXMOV AX,STACK_SEGMOV SS,AX.CODE_SEG ENDSEND START ;結(jié)束17。程序如下:D_SEG SEGMENT ;數(shù)據(jù)段定義AUGEND DD 99251D_SEG ENDSE_SEG SEGMENT ;附加段定義ADDEND DD -15926E_SEG ENDSC_SEG SEGMENT ;代碼段定義ASSUME CS:C_SEG , DS:D_SEG,ES:E_SEGSTA
33、RT: MOV AX,D_SEGMOV DS,AXMOV AX,E_SEGMOV ES,AXMOV EAX,DS:AUGENDADD EAX,ES:ADDENDMOV DS:SUM,EAXC_SEG ENDSEND START ;結(jié)束18。19。需要加上PTR偽操作的有:(2(3(4IBM-PC匯編語言程序設(shè)計(jì)(第二版課后習(xí)題答案(清華大學(xué)出版社(沈美明,溫冬蟬著第五章答案2006-11-04 22:01清華大學(xué)出版社,沈美明、溫冬嬋編著現(xiàn)在部分學(xué)校用的還是這本書,清華大學(xué)出版社,沈美明、溫冬嬋編著。這當(dāng)然不是標(biāo)準(zhǔn)答案,自己做的,呵呵,希望對(duì)大家有用處。5.1 試編寫一個(gè)匯編語言程序,要求對(duì)鍵
34、盤輸入的小寫字母用大寫字母顯示出來.model small.stack 100H.codemain proc farStart:push dxmov ax,0push axmov ah,01Hint 21Hcmp al,61Hjl lop1cmp al,7BHjge lop1sub al,20Hmov dl,allop1:mov ah,2int 21HretEnd start5.2 編寫一個(gè)程序,從鍵盤接受一個(gè)小寫字母,然后找出它的前導(dǎo)字符和后續(xù)字符,再按順序顯示這三個(gè)字符.model small.386.codeMAIN PROC FARstart:push dssub ax,axpush
35、axinput:mov ah,7Hint 21Hcmpe:cmp al,20HJE exitcmp al,61HJL inputcmp al,7AHJG inputprint:sub al,01Hmov dl,almov ah,02Hint 21Hadd al,01Hmov dl,almov ah,02Hint 21Hadd al,01Hmov dl,almov ah,02Hint 21H;輸出換行回車mov dl,0AHmov ah,02Hint 21Hjmp inputexit :retMAIN ENDPEND start5.3 將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這四組數(shù)分
36、別放在AL、BL、CL、DL中。.model small.datax DB 4 dup(?.stack 100H.codeMAIN PROC FARstart:push dsand ax,00Hpush axmov ax,1234Hmov cx,04Hmov si,00Hlop:push cxmov cl,04Hrol ax,clpush axand al,0FHmov BYTE PTR xsi,alpop axpop cxadd si,2Loop lopmov al,Xmov bl,X+2mov cl,X+4mov dl,X+6print:mov ah,02Hint 21Hmov dl,al
37、mov ah,02Hint 21Hmov dl,blint 21Hmov dl,clmov ah,02Hint 21Hexit:retMAIN ENDPEND start5.4 編寫一個(gè)程序,要求比較兩個(gè)字符串STRING1和STRING2所含字符是否相同,若相同則顯示"MATCH",若不同在顯示:"NO MATCH"。.model small.dataSTRING1 DB 'I must study hard'STRING2 DB 'I must study hard'X DB 'MATCH .$'Y D
38、B 'NO MATCH.$'.stack 100H.codemain proc farStart:push dxmov ax,0push axmov ax,datamov ds,axmov es,axlea si,STRING1lea di,STRING2cldmov cx,(string2-string1/ type STRING2retEnd start5.5編寫一個(gè)程序,要求能從鍵盤接收一個(gè)個(gè)位數(shù)N,然后響鈴N次,(響鈴的ASCII為07。這題比較有意思,呵呵。model small.codemain proc farstart:push dspush axinput:m
39、ov ah,01Hint 21Hcmp al,20Hje exitcmp al,30Hjle inputcmp al,3AHjge inputsub al,30Hmov cx,axand cx,0FFHlop:mov dl,07Hmov ah,2Hint 21Hloop lopjmp inputexit :retmain endpend start5.6編寫程序,將一個(gè)包含有20個(gè)數(shù)據(jù)的數(shù)組M分成兩個(gè)數(shù)組:正數(shù)數(shù)組和負(fù)數(shù)數(shù)組N,并分別把這兩個(gè)數(shù)組中的數(shù)據(jù)個(gè)數(shù)顯示出來。.model small.386.dataM DB 1,2,3,4,5,6,7,8,9,10,-1,-2,-3,-4,-5,-6
40、,-7,-8,-9,-10P DB 20 dup(?N DB 20 dup(?.codeMAIN PROC FARstart:PUSH dsAND ax,0PUSH axMOV ax,datamov ds,axMOV bx,0MOV si,0MOV di,0MOV cx,20Dcmpe :CMP Mbx,0JL ifLowhight :MOV al,byte ptr MbxMOV byte ptr Psi,alinc siJMP commonContrlifLow :MOV al,byte ptr MbxMOV byte ptr Ndi,alINC dicommonContrl:INC bxl
41、oop cmpemov ax,sicall showNumbercall printCRmov ax,dicall showNumberexit: retMAIN ENDP;注意,ShowNumber這個(gè)子過程有問題,請(qǐng)自行修改; showNumber PROC NEARcovernum:DAAMOV dx,axMOV cl,2Hshow:ROL dl,4Hpush dxAND dl,0fHADD dl,30HMOV ah,02Hint 21Hpop dxloop showretshowNumber ENDP ;printCR PROC NEARmov dl,0aHmov ah,02Hint
42、21Hmov dl,0dHmov ah,02Hint 21HretprintCR ENDPend start5.7編制一個(gè)匯編語言程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),并把它放在AX中。此題根據(jù)題意要求應(yīng)該使用完整匯編格式,因?yàn)榫喐袷揭彩褂肈ATA.dataare segmentDATA DW 3322H,4555H,200H,3544H,1245Hnum DB ($-DATA/2dataare endscode segmentassume cs:code,ds:dataareMAIN PROC FARstart:push dsmov ax,0Hpush axmov ax,
43、dataaremov ds,axmov dx,0H ;偶數(shù)數(shù)量計(jì)數(shù)mov cx,Word ptr nummov si,0HisO:mov bx,WORD PTR DATAsishr bx,1Hjnc addDXjmp commonControladdDX:ADD dx,1Hcmp dx,1Hje firstAXValuecompare:mov bx,WORD PTR DATAsicmp bx,axjge commonControlmov ax,bxcommonControl:ADD si,2Hloop isOjmp exitfirstAXvalue:mov ax,WORD PTR DATAsi
44、jmp compareexit:retMAIN ENDPcode endsEND start5.8沒有做。5.9編寫一個(gè)匯編語言程序,要求從鍵盤上接收一個(gè)思維的十六位進(jìn)制數(shù),并在終端上顯示與它等值的二進(jìn)制數(shù)。.model small.386.codemain proc farstart:push dsmov ax,0push axmov ax,0mov cx,4mov dx,0input:mov ah,1Hint 21Hcmp al,30Hjl inputcmp al,39Hjle scmp al,61Hjl inputcmp al,66Hjg inputsub al,27Hs:sub al,
45、30Hadd dl,alcmp cx,1Hje frol dx,4f:loop inputexit:call printretmain endpprint proc nearmov cx,10Hp:rol dx,1push dxand dx,1 add dx,30H mov ah,2 int 21H pop dx loop p ret print endp end start 5.10設(shè)有一段英文,其變量字符名為ENG,并以$字符結(jié)束。試編寫一程序,查對(duì)單詞SUN在該文中的 出現(xiàn)次數(shù),并以格式"SUN XXXX"顯示出次數(shù)。 .model small .386 .data
46、ENG db 'SUN's SUN JAVA',24H ;24H = $ MESSAGE db 'SUN:','$' .stack 100H .code MAIN PROC FAR start: PUSH DS AND AX,0 PUSH AX MOV AX,data MOV DS,AX ;-MOV AX,0H MOV SI,1H subSI1: SUB SI,1H subSI2: SUB SI,1H compareS: ADD SI,1H MOV DL,ENGSI CMP DL,24H JE print CMP DL,53H JNE compareS compareU: ADD SI,1H MOV DL,ENGSI CMP DL,55H JNE subSI2 compareN: ADD SI,1H MOV DL,ENGSI CMP DL,4EH JNE subSI1 INC AX JMP com
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律盡職調(diào)查員考試試卷及答案
- 巢湖市營養(yǎng)學(xué)會(huì)征求意見表
- 2025年腈綸扁平絲項(xiàng)目建議書
- 2025年樹脂型密封膠項(xiàng)目建議書
- Unit 3 My weekend plan(第6課時(shí))Part B Lets check 教案人教pep英語六年級(jí)上冊(cè)
- 2025年江西省高校畢業(yè)生“三支一扶”計(jì)劃招募考試試題【答案】
- 2025年曲阜市社區(qū)工作者招聘考試筆試試題【答案】
- 2025年非調(diào)質(zhì)鋼項(xiàng)目合作計(jì)劃書
- 消防員安全培訓(xùn)心得體會(huì)(3篇)
- 湘藝版音樂六年級(jí)上冊(cè)《搖太陽》教案1
- 初中數(shù)學(xué)學(xué)法指導(dǎo)講座
- GB 8109-2023推車式滅火器
- 音樂考試真題
- 彩鋼屋面自粘卷材施工方案
- 石油化工設(shè)備設(shè)計(jì)便查手冊(cè)
- 集卡車安全操作規(guī)程
- 高考英語詞匯3500電子版
- GMP認(rèn)證資料設(shè)備管理制度
- 赫茲接觸課件完整版
- 2022年新疆公務(wù)員考試行測真題及答案解析
- 腦癌-膠質(zhì)瘤NCCN患者指南中文版2021
評(píng)論
0/150
提交評(píng)論