




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、附錄:IBMPC匯編語言程序設(shè)計習(xí)題參考答案第 一 章. 習(xí) 題1.1 用降冪法和除法將下列十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)和十六進(jìn)制數(shù):(1) 369(2) 10000(3) 4095(4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2 將下列二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)和十進(jìn)制數(shù):(1) 10 1101(2) 1000 0000(3) 1111 1111 1111 1111(4) 11
2、11 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3 將下列十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)和十進(jìn)制數(shù):(1) FA(2) 5B(3) FFFE(4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4 完成下列十六進(jìn)制數(shù)的運(yùn)算,并轉(zhuǎn)換為十進(jìn)制數(shù)進(jìn)行
3、校核:(1) 3A+B7(2) 1234+AF(3) ABCD-FE(4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5 下列各數(shù)均為十進(jìn)制數(shù),請用8位二進(jìn)制補(bǔ)碼計算下列各題,并用十六進(jìn)制數(shù)表示其運(yùn)算結(jié)果。(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 11
4、00B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 01
5、00B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6 下列各數(shù)為十六進(jìn)制表示的8位二進(jìn)制數(shù),請說明當(dāng)它們分別被看作是用補(bǔ)碼表示的帶符號數(shù)或無符號數(shù)時,它們所表示的十進(jìn)制數(shù)是什么?(1) D8(2) FF答:(1) D8H表示的帶符號數(shù)為 -40,D8H表示的無符號數(shù)為216;(2) FFH表示的帶符號數(shù)為 -1, FFH表示的無符號數(shù)為255。1.7 下列各數(shù)均為用十六進(jìn)制表示的8位二進(jìn)制數(shù),請說明當(dāng)它們分別被看作是用補(bǔ)碼
6、表示的數(shù)或字符的ASCII碼時,它們所表示的十進(jìn)制數(shù)及字符是什么?(1) 4F(2) 2B(3) 73(4) 59答:(1) 4FH表示的十進(jìn)制數(shù)為 79,4FH表示的字符為O;(2) 2BH表示的十進(jìn)制數(shù)為 43,2BH表示的字符為 +;(3) 73H表示的十進(jìn)制數(shù)為115,73H表示的字符為s;(4) 59H表示的十進(jìn)制數(shù)為89,59H表示的字符為Y。1.8 請寫出下列字符串的ASCII碼值。For example,This is a number 3692.答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH54H 68H 6
7、9H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H 72H 20H 33H 36H 39H 32H 2EH 0AH 0DH第 二 章. 習(xí) 題E5H000B0H1EH000B1H3CH000B3H2AH000B4H存儲器2.2題的信息存放情況000B2H2.1 在80x86微機(jī)的輸入/輸出指令中,I/O端口號通常是由DX寄存器提供的,但有時也可以在指令中直接指定00FFH的端口號。試問可直接由指令指定的I/O端口數(shù)。答:可直接由指令指定的I/O端口數(shù)為256個。2.2 有兩個16位字1EE5H和2A3CH分別存放在80x86微機(jī)的存儲器的000
8、B0H和000B3H單元中,請用圖表示出它們在存儲器里的存放情況。答:存儲器里的存放情況如右上圖所示。2.3 在IBM PC機(jī)的存儲器中存放信息如右下圖所示。試讀出30022H和30024H字節(jié)單元的內(nèi)容,以及30021H和30022H字單元的內(nèi)容。34H30021HABH30022HCDH30023HEFH30024H存儲器2.3題的信息存放情況12H30020H答:30022H字節(jié)單元的內(nèi)容為ABH;30024H字節(jié)單元的內(nèi)容為EFH。30021H字單元的內(nèi)容為AB34H;30022H字單元的內(nèi)容為CDABH。2.4 在實模式下,段地址和偏移地址為3017:000A的存儲單元的物理地址是什
9、么?如果段地址和偏移地址是3015:002A和3010:007A呢?答:3017:000A、3015:002A和3010:007A的存儲單元的物理地址都是3017AH。2.5 如果在一個程序開始執(zhí)行以前(CS)=0A7F0H,(如16進(jìn)制數(shù)的最高位為字母,則應(yīng)在其前加一個0) (IP)=2B40H,試問該程序的第一個字的物理地址是多少?答:該程序的第一個字的物理地址是0AAA40H。10F4010E4020F4020E4021F0031F0031FF041FF0附加段數(shù)據(jù)段堆棧段代碼段2.6 題的存儲器分段示意圖2.6 在實模式下,存儲器中每一段最多可有10000H個字節(jié)。如果用調(diào)試程序DEB
10、UG的r命令在終端上顯示出當(dāng)前各寄存器的內(nèi)容如下,請畫出此時存儲器分段的示意圖,以及條件標(biāo)志OF、SF、ZF、CF的值。C>debug-rAX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC答:此時存儲器分段的示意圖如右圖所示。OF、SF、ZF、CF的值都為0。2.7 下列操作可使用那些寄存器?(1) 加法和減法數(shù)據(jù)寄存器等(2) 循環(huán)計數(shù)CX(3) 乘法和除法AX、DX,乘數(shù)和除數(shù)用其他寄
11、存器或存儲器(4) 保存段地址段寄存器(5) 表示運(yùn)算結(jié)果為0ZF=1(6) 將要執(zhí)行的指令地址CS:IP(7) 將要從堆棧取出數(shù)據(jù)的地址SS:SP答:答案見題目的右邊。2.8 那些寄存器可以用來指示存儲器地址?答:BX、BP、SI、DI、堆棧操作時的SP、對應(yīng)的段地址、386及其后繼機(jī)型的Exx。2.9 請將下列左邊的項和右邊的解釋聯(lián)系起來(把所選字母放在括號中):(1) CPU(M)A.保存當(dāng)前棧頂?shù)刂返募拇嫫鳌?2) 存儲器(C)B.指示下一條要執(zhí)行的指令的地址。(3) 堆棧(D)C.存儲程序、數(shù)據(jù)等信息的記憶裝置,微機(jī)有RAM和ROM兩種。(4) IP(B)D.以后進(jìn)先出方式工作的存儲
12、空間。(5) SP(A)E.把匯編語言程序翻譯成機(jī)器語言程序的系統(tǒng)程序。(6) 狀態(tài)標(biāo)志(L)F.唯一代表存儲空間中每個字節(jié)單元的地址。(7) 控制標(biāo)志(K)G.能被計算機(jī)直接識別的語言。(8) 段寄存器(J)H.用指令的助記符、符號地址、標(biāo)號等符號書寫程序的語言。(9) 物理地址(F)I.把若干個模塊連接起來成為可執(zhí)行文件的系統(tǒng)程序。(10) 匯編語言(H)J.保存各邏輯段的起始地址的寄存器,8086/8088機(jī)有四個:CS、DS、SS、ES。(11) 機(jī)器語言(G)K.控制操作的標(biāo)志,如DF位。(12) 匯編程序(E)L.記錄指令操作結(jié)果的標(biāo)志,共6位:OF、SF、ZF、AF、PF、CF。
13、(13) 連接程序(I)M.分析、控制并執(zhí)行指令的部件,由算術(shù)邏輯部件ALU和寄存器等組成。(14) 指令(O)N.由匯編程序在匯編過程中執(zhí)行的指令。(15) 偽指令(N)O.告訴CPU要執(zhí)行的操作(一般還要指出操作數(shù)地址),在程序運(yùn)行時執(zhí)行。答:答案見題目的括號中。第 三 章. 習(xí) 題3.1 給定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什么?(1) 立即尋址(2) 直接尋址(3) 使用BX的寄存器尋址(4) 使用BX的簡接尋址(5) 使用BX的寄存器相對尋址(6) 基址變址尋址(7) 相對基址變址尋址答:(1) 操作數(shù)在指令中,
14、即立即數(shù);(2) EA=D=7237H;(3) 無EA,操作數(shù)為(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超過了段的邊界,最高進(jìn)位位丟失,因此EA=004FH。3.2 試根據(jù)以下要求寫出相應(yīng)的匯編語言指令(1) 把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中。(2) 用寄存器BX和SI的基址變址尋址方式把存儲器中的一個字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL寄存器中。(3) 用寄存器BX和位移量0B2H的寄存器相對尋址方式把存
15、儲器中的一個字和(CX)相加,并把結(jié)果送回存儲器中。(4) 用位移量為0524H的直接尋址方式把存儲器中的一個字與數(shù)2A59H相加,并把結(jié)果送回存儲單元中。(5) 把數(shù)0B5H與(AL)相加,并把結(jié)果送回AL中。答:(1) ADD DX, BX(2) ADD AL, BXSI(3) ADD BX+0B2H, CX(4) ADD WORD PTR 0524H, 2A59H(5) ADD AL, 0B5H3.3 寫出把首地址為BLOCK的字?jǐn)?shù)組的第6個字送到DX寄存器的指令。要求使用以下幾種尋址方式:(1) 寄存器間接尋址(2) 寄存器相對尋址(3) 基址變址尋址答:(1) MOV BX, OFF
16、SET BLOCKADD BX, (61)*2MOV DX, BX(2) MOV BX, OFFSET BLOCK改為:MOV BX, (6-1)*2MOV DX, BX+(61)*2也可MOV DX, BLOCKBX(3) MOV BX, OFFSET BLOCKMOV SI, (61)*2MOV DX, BXSIFFH00H80H3.6題的作圖表示10H1B00:2000H1B00:2001H1B00:2002H1B00:2003H8000:FF10H8000:FF11H?(AL)?(AH)3.4 現(xiàn)有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12
17、H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各條指令執(zhí)行完后AX寄存器的內(nèi)容。(1) MOV AX, 1200H(2) MOV AX, BX(3) MOV AX, 1200H(4) MOV AX, BX(5) MOV AX, 1100BX(6) MOV AX, BXSI(7) MOV AX, 1100BXSI答:(1) (AX)=1200H(2) (AX)=0100H(3) (AX)=4C2AH(4) (AX)=3412H(5) (AX)=4C
18、2AH(6) (AX)=7856H(7) (AX)=65B7H3.5 給定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,試為以下的轉(zhuǎn)移指令找出轉(zhuǎn)移的偏移地址。(1) 段內(nèi)直接尋址(2) 使用BX及寄存器間接尋址方式的段內(nèi)間接尋址(3) 使用BX及寄存器相對尋址方式的段內(nèi)間接尋址答:(1) JMP NEAR PTR 5119H;(IP)=5119H+(IP)+03H)=7CDCH,物理地址PA=09CDCH(IP)+03H是JMP NEAR PTR 5119H指令的下一條指
19、令的首地址。(2) JMP WORD PTR BX;(IP)=(DS)*10H+(BX)=0600H,PA=02600H(3) JMP DBX;(IP)=(DS)*10H+(BX)+D)=098AH,PA=0298AH3.6 設(shè)當(dāng)前數(shù)據(jù)段寄存器的內(nèi)容為1B00H,在數(shù)據(jù)段的偏移地址2000H單元內(nèi),含有一個內(nèi)容為0FF10H和8000H的指針,它們是一個16位變量的偏移地址和段地址,試寫出把該變量裝入AX的指令序列,并畫圖表示出來。MOVBX, 2000HLESBX, BXMOVAX, ES :BX答:MOV BX, 2000H;圖示如上所示。MOV AX, 2000H+2MOV E
20、S, AXMOV AX, ES:BX3.7 在0624H單元內(nèi)有一條二字節(jié)JMP SHORT OBJ指令,如其中位移量為(1) 27H,(2) 6BH,(3) 0C6H,試問轉(zhuǎn)向地址OBJ的值是多少?答:(1) OBJ=0624H+02H+27H=064DH(2) OBJ=0624H+02H+6BH=0691H(3) OBJ=0624H+02H+0C6H=05ECH;C6H對應(yīng)的負(fù)數(shù)為-3AH(向上轉(zhuǎn)移,負(fù)位移量)3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為005
21、0H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH(2) MOV AX, BX(3) MOV AX, 100H(4) MOV AX, VAL(5) MOV AX, BX(6) MOV AX, ES:BX(7) MOV AX, BP(8) MOV AX, SI(9) MOV AX, BX+10(10) MOV AX, VALBX(11) MOV AX, BXSI(12) MOV AX, VALBXSI答:(1) 立即方式;操作數(shù)在本條指令中(2) 寄存器尋址方式;操作數(shù)為 (BX)=0100H(3) 直接尋址方式;PA=20100H(4) 直接尋址
22、方式;PA=20050H(5) BX寄存器間接尋址方式;PA=20100H(6) 附加段BX寄存器間接尋址方式;PA=21100H(7) BP寄存器間接尋址方式;PA=15010H(8) SI寄存器間接尋址方式;PA=200A0H(9) BX寄存器相對尋址方式;PA=20110H(10) BX寄存器相對尋址方式;PA=20150H(11) BX和SI寄存器基址變址尋址方式;PA=201A0H(12) BX和SI寄存器相對基址變址尋址方式;PA=201F0H3.9 在ARRAY數(shù)組中依次存儲了七個字?jǐn)?shù)據(jù),緊接著是名為ZERO的字單元,表示如下:ARRAYDW 23, 36, 2, 100, 32
23、000, 54, 0ZERODW ?(1) 如果BX包含數(shù)組ARRAY的初始地址,請編寫指令將數(shù)據(jù)0傳送給ZERO單元。(2) 如果BX包含數(shù)據(jù)0在數(shù)組中的位移量,請編寫指令將數(shù)據(jù)0傳送給ZERO單元。答:(1) MOV AX, BX+(7-1)*2MOV BX+(7)*2, AX(2) MOV AX, ARRAY BXMOV ARRAY BX+2, AX0AH00H14H00H1EH00H28H00H32H00HTABLETABLE+33.11題的TABLE存儲方式3.10 如TABLE為數(shù)據(jù)段中0032單元的符號名,其中存放的內(nèi)容為1234H,試問以下兩條指令有什么區(qū)別?指令執(zhí)行完后AX寄
24、存器的內(nèi)容是什么?MOVAX, TABLELEAAX, TABLE答:MOVAX, TABLE是將TABLE單元的內(nèi)容送到AX,(AX)=1234HLEAAX,TABLE是將TABLE單元的有效地址送到AX,(AX)=0032H3.11 執(zhí)行下列指令后AX寄存器中的內(nèi)容是什么?TABLEDW 10, 20, 30, 40, 50;000AH, 0014H, 001EH, 0028H, 0032HENTRYDW 3MOVBX, OFFSET TABLEADDBX, ENTRYMOVAX, BX答:(AX)=1E00H (TABLE的存儲方式如右圖所示)3.12 下列ASCII碼串(包括空格符)依
25、次存儲在起始地址為CSTRING的字節(jié)單元中:CSTRING DB BASED ADDRESSING請編寫指令將字符串中的第1個和第7個字符傳送給DX寄存器。答:MOV DH, CSTRINGMOV DL, CSTRING+7-13.13 已知堆棧段寄存器SS的內(nèi)容是0FFA0H,堆棧指針寄存器SP的內(nèi)容是00B0H,先執(zhí)行兩條把8057H和0F79H分別進(jìn)棧的PUSH指令,再執(zhí)行一條POP指令。試畫出堆棧區(qū)和SP的內(nèi)容變化過程示意圖(標(biāo)出存儲單元的物理地址)。答:堆棧區(qū)和SP的內(nèi)容變化過程示意圖如下左圖所示。8000H1B00:20003.14題的存儲區(qū)情況2B00HX1B00:20022B
26、00:800079H0FH57H80HFFAACHFFAB0H3.13題的堆棧區(qū)和SP的內(nèi)容變化過程示意圖FFAAEH首次進(jìn)棧(SP)(SP)-2再次進(jìn)棧(SP)(SP)-2出棧時(SP)(SP)+23.14 設(shè)(DS)=1B00H,(ES)=2B00H,有關(guān)存儲單元的內(nèi)容如上右圖所示。請寫出兩條指令把字變量X裝入AX寄存器。答:MOV BX, 2000HMOV AX, ES:BX3.15 求出以下各十六進(jìn)制數(shù)與十六進(jìn)制數(shù)62A0H之和,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1) 1234H(2) 4321H(3) CFA0H(4) 9D60H答:(1) 和為74D4H;SF=0,
27、ZF=0,CF=0,OF=0(2) 和為A5C1H;SF=1,ZF=0,CF=0,OF=1(3) 和為3240H;SF=0,ZF=0,CF=1,OF=0(4) 和為0000H;SF=0,ZF=1,CF=1,OF=03.16 求出以下各十六進(jìn)制數(shù)與十六進(jìn)制數(shù)4AE0H的差值,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1) 1234H(2) 5D90H(3) 9090H(4) EA04H答:(1) 差為C754H;SF=1,ZF=0,CF=1,OF=0(2) 差為12B0H;SF=0,ZF=0,CF=0,OF=0(3) 差為45B0H;SF=0,ZF=0,CF=0,OF=1(4) 差為9F
28、24H;SF=1,ZF=0,CF=0,OF=03.17 寫出執(zhí)行以下計算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號數(shù)單元的地址。(1) ZW+(Z-X)(2) ZW-(X+6)-(R+9)(3) Z(W*X)/(Y+6),R余數(shù)(4) Z(W-X)/5*Y)*2答:(1) MOV AX, Z;以下程序都未考慮帶符號數(shù)的溢出SUB AX, XADD AX, WMOV Z, AX(2) MOV BX, XADD BX, 6MOV CX, RADD CR, 9MOV AX, WSUB AX, BXSUB AX, CXMOV Z, AX(3) ADD Y, 6MOV AX, WIMUL X
29、IDIV YMOV Z, AXMOV R, DX(4) MOV AX, WSUB AX, XCWDMOV BX, 5IDIV BXIMUL YSHL AX, 1;(DX),(AX)*2RCL DX, 13.18 已知程序段如下:MOVAX, 1234H;(AX)=1234H,標(biāo)志位不變MOVCL, 4;(AX)和標(biāo)志位都不變ROLAX, CL;(AX)=2341H,CF=1,SF和ZF不變DECAX;(AX)=2340H,CF=1不變,SF=0,ZF=0MOVCX, 4;(AX)和標(biāo)志位都不變MULCX;(AX)=8D00H,CF=OF=0,其它標(biāo)志無定義INT20H試問:(1) 每條指令執(zhí)行
30、完后,AX寄存器的內(nèi)容是什么?(2) 每條指令執(zhí)行完后,進(jìn)位、符號和零標(biāo)志的值是什么?(3) 程序結(jié)束時,AX和DX的內(nèi)容是什么?答:(1) 見注釋;(2) 見注釋;(3) (AX)=8D00H,(DX)=03.19 下列程序段中的每條指令執(zhí)行完后,AX寄存器及CF、SF、ZF和OF的內(nèi)容是什么?MOVAX, 0;(AX)=0,標(biāo)志位不變DECAX;(AX)=0FFFFH,CF不變,SF=1,ZF=0,OF=0ADDAX, 7FFFH;(AX)=7FFEH,CF=1,SF=0,ZF=0,OF=0ADDAX, 2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1NOTAX;(AX)=
31、7FFFH,標(biāo)志位不變SUBAX, 0FFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1ADDAX, 8000H;(AX)=0,CF=1,SF=0,ZF=1,OF=1SUBAX, 1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0ANDAX, 58D1H;(AX)=58D1H,CF=0,SF=0,ZF=0,OF=0SALAX, 1;(AX)=0B1A2H,CF=0,SF=1,ZF=0,OF=1SARAX, 1;(AX)=0D8D1H,CF=0,SF=1,ZF=0,OF=0NEGAX;(AX)= 272FH,CF=1,SF=0,ZF=0,OF=0RORAX,
32、 1;(AX)= 9397H,CF=1,SF和ZF不變,OF=1答:見注釋。3.20 變量DATAX和變量DATAY的定義如下:DATAXDW 0148HDW 2316HDATAYDW 0237HDW 4052H請按下列要求寫出指令序列:(1) DATAX和DATAY兩個字?jǐn)?shù)據(jù)相加,和存放在DATAY中。(2) DATAX和DATAY兩個雙字?jǐn)?shù)據(jù)相加,和存放在從DATAY開始的雙字單元中。(3) 解釋下列指令的作用:STCMOV BX, DATAXADC BX, DATAY(4) DATAX和DATAY兩個字?jǐn)?shù)據(jù)相乘(用MUL)。(5) DATAX和DATAY兩個雙字?jǐn)?shù)據(jù)相乘(用MUL)。(6
33、) DATAX除以23(用DIV)。(7) DATAX雙字除以字DATAY (用DIV)。答:(1) MOV AX, DATAXADD DATAY, AXMOV AX, DATAX+2ADD DATAY+2, AX(2) MOV AX, DATAXADD DATAY, AXMOV AX, DATAX+2ADC DATAY+2, AXMOV DATAY+4, 0;用于存放進(jìn)位位ADC DATAY+4, 0(3) DATAX和DATAY兩個字?jǐn)?shù)據(jù)之和加1,結(jié)果存入BX寄存器。(4) RESULT1DW 0DW 0RESULT2DW 0DW 0 MOV AX, DATAXMUL DATAYMOV R
34、ESULT1 , AXMOV RESULT1+2, DXMOV AX, DATAX+2MUL DATAY+2MOV RESULT2 , AXMOV RESULT2+2, DX(5) AA DW 0BB DW 0CC DW 0DD DW 0 MOV AX, DATAXMUL DATAYMOV AA , AXMOV BB, DXMOV AX, DATAXMUL DATAY+2ADD BB, AXADC CC, DXMOV AX, DATAX+2MUL DATAYADD BB, AXADC CC, DXADC DD, 0MOV AX, DATAX+2MUL DATAY+2ADD CC, AXADC
35、DD, DX(6) MOV AX, DATAXMOV BL, 23DIV BL(7) MOV DX, DATAX+2MOV AX, DATAXDIV DATAY3.21 寫出對存放在DX和AX中的雙字長數(shù)求補(bǔ)的指令序列。答:NEG DX也可為:NOTDXNEG AXNOTAXSBB DX, 0ADDAX, 1ADCDX, 03.22 試編寫一程序求出雙字長數(shù)的絕對值。雙字長數(shù)在A和A+2單元中,結(jié)果存放在B和B+2單元中。答:程序段如下:MOVAX, AMOVDX, A+2CMPDX, 0JNSZHENSHU;不是負(fù)數(shù)則轉(zhuǎn)走NEGDXNEGAXSBBDX, 0ZHENSHU:MOVB, AXM
36、OVB+2, DXINT20H3.23 假設(shè)(BX)=0E3H,變量VALUE中存放的內(nèi)容為79H,確定下列各條指令單獨執(zhí)行后的結(jié)果。(1) XORBX, VALUE;(BX)=9AH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=1(2) ANDBX, VALUE;(BX)=61H,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(3) ORBX, VALUE;(BX)=0FBH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=0(4) XORBX, 0FFH;(BX)=1CH,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(5) ANDBX, 0;(
37、BX)=00H,CF、OF都為0,AF無定義,SF=0,ZF=1,PF=1(6) TESTBX, 01H;(BX)=0E3H,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=0答:見注釋。3.24 試寫出執(zhí)行下列指令序列后BX寄存器的內(nèi)容。執(zhí)行前(BX)=6D16H。MOVCL, 7SHRBX, CL答:(BX)=00DAH。3.25 試用移位指令把十進(jìn)制數(shù)+53和-49分別乘以2。它們應(yīng)該用什么指令?得到的結(jié)果是什么?如果要除以2呢?答:MOVAL, 53SALAL, 1;(AL)=(+53*2)=6AHMOVAL, -49SALAL, 1;(AL)=(-49*2)=9EHMOVAL
38、, 53SARAL, 1;(AL)=(53/2)= 1AHMOVAL, -49SARAL, 1;(AL)=(-49/2)=0E7H3.26 試分析下面的程序段完成什么功能?MOVCL, 04SHLDX, CLMOVBL, AHSHLAX, CLSHRBL, CLORDL, BL答:本程序段將 (DX),(AX) 的雙字同時左移4位,即將此雙字乘以10H (16)。3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各條指令單獨執(zhí)行后DX中的值。(1) SHRDX, 1;(DX)=05CH(2) SARDX, CL;(DX)=17H(3) SHLDX, CL;(DX)=5C8H
39、(4) SHLDL, 1;(DX)=72H(5) RORDX, CL;(DX)=2017H(6) ROLDL, CL;(DX)=0CDH(7) SALDH, 1;(DX)=0B9H(8) RCLDX, CL;(DX)=2CCH(4) RCRDL, 1;(DX)=0DCH答:見注釋。3.28 下列程序段執(zhí)行完后,BX寄存器的內(nèi)容是什么?MOVCL, 3MOVBX, 0B7HROLBX,1RORBX, CL答:(BX)=0C02DH。3.29 假設(shè)數(shù)據(jù)段定義如下:CONAMEDBSPACE EXPLORERS INC.PRLINEDB20 DUP ()用串指令編寫程序段分別完成以下功能:(1) 從
40、左到右把CONAME中的字符串傳送到PRLINE。(2) 從右到左把CONAME中的字符串傳送到PRLINE。(3) 把CONAME中的第3和第4個字節(jié)裝入AX。(4) 把AX寄存器的內(nèi)容存入從PRLINE+5開始的字節(jié)中。(5) 檢查CONAME字符串中有無空格字符,如有則把第一個空格字符的地址傳送給BX寄存器。答:(1) MOVCX, 20CLDMOVSI, SEG CONAMEMOVDS, SIMOVES, SILEASI, CONAMELEADI, PRLINEREPMOVSB(2) MOVCX, 20STDMOVSI, SEG CONAMEMOVDS, SIMOVES, SILEAS
41、I, CONAMEADDSI, 20-1LEADI, PRLINEADDDI, 20-1REPMOVSB(3) MOVAX, WORD PTR CONAME+3-1(4) MOVWORD PTR PRLINE +5, AX(5) MOVAL, ;空格的ASCII碼送AL寄存器CLDMOVDI, SEG CONAMEMOVES, DILEADI, CONAMEREPNESCASBJNENEXTDECDIMOVBX, DINEXT:3.30 編寫程序段,把字符串STRING中的&字符用空格符代替。STRING DB The date is FEB&03答:程序段如下:MOVCX,
42、18MOVAL, &CLDMOVDI, SEG STRINGMOVES, DILEADI, STRINGREPNESCASBJNENEXTDECDIMOVES:BYTE PTR DI, ;送空格符NEXT: 3.31 假設(shè)數(shù)據(jù)段中數(shù)據(jù)定義如下:STUDENT_NAMEDB30 DUP (?)STUDENT_ADDRDB9 DUP (?)PRINT_LINEDB132 DUP (?)分別編寫下列程序段:(1) 用空格符清除PRINT_LINE域。(2) 在STUDENT_ADDR中查找第一個-。(3) 在STUDENT_ADDR中查找最后一個-。(4) 如果STUDENT_NAME域中全
43、是空格符時,填入*。(5) 把STUDENT_NAME移到PRINT_LINE的前30個字節(jié)中,把STUDENT_ ADDR移到PRINT_LINE的后9個字節(jié)中。答:公共的程序段如下:MOVDI, DSMOVES, DI(1) MOVCX, 132MOVAL., ;空格的ASCII碼送AL寄存器CLDLEADI, PRINT_LINEREPSTOSB(2) MOVCX, 9MOVAL., -CLDLEADI, STUDENT_ ADDRREPNESCASBJNENO_DASHDECDINO_DASH: (3) MOVCX, 9MOVAL., -STDLEADI, STUDENT_ ADDRA
44、DDDI, 9-1REPNESCASBJNENO_DASHINCDINO_DASH: (4) MOVCX, 30MOVAL, ;空格的ASCII碼送AL寄存器CLDLEADI, STUDENT_NAMEREPESCASBJNENEXTMOVCX, 30MOVAL, * ;“*”的ASCII碼送AL寄存器LEADI, STUDENT_NAMEREPSTOSBNEXT: (5) MOVCX, 30CLDLEASI, STUDENT_NAMELEADI, PRINT_LINEREPMOVSBMOVCX, 9STDLEASI, STUDENT_ADDR+9-1LEADI, PRINT_LINE+132
45、-1REPMOVSB3.32 編寫一程序段:比較兩個5字節(jié)的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串則執(zhí)行NEW_LESS;否則順序執(zhí)行程序。答:程序段如下:MOVCX, 5CLDMOVDI, SEG OLDSMOVDS, DIMOVES, DILEASI, OLDSLEADI, NEWSREPECMPSBJNENEW_LESSNEW_LESS:3.33 假定AX和BX中的內(nèi)容為帶符號數(shù),CX和DX中的內(nèi)容為無符號數(shù),請用比較指令和條件轉(zhuǎn)移指令實現(xiàn)以下判斷:(1) 若DX的內(nèi)容超過CX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EXCEED。(2) 若BX的內(nèi)容大于AX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EXCE
46、ED。(3) 若CX的內(nèi)容等于0,則轉(zhuǎn)去執(zhí)行ZERO。(4) BX與AX的內(nèi)容相比較是否產(chǎn)生溢出?若溢出則轉(zhuǎn)OVERFLOW。(5) 若BX的內(nèi)容小于等于AX的內(nèi)容,則轉(zhuǎn)EQ_SMA。(6) 若DX的內(nèi)容低于等于CX的內(nèi)容,則轉(zhuǎn)EQ_SMA。答:(1) CMPDX, CXJAEXCEED(2) CMPBX, AXJGEXCEED(3) JCXZZERO(4) CMPBX, AXJOOVERFLOW(5) CMPBX, AXJLEEQ_SMA(6) CMPDX, CXJBEEQ_SMA3.34 試分析下列程序段:ADDAX, BXJNOL1JNCL2SUBAX, BXJNC L3JNOL4JMP
47、SHORT L5如果AX和BX的內(nèi)容給定如下:AX BX(1) 147BH80DCH(2) B568H42C8H(3) 42C8H608DH (4) D023H 9FD0H(5) 94B7H B568H問該程序分別在上面5種情況下執(zhí)行后,程序轉(zhuǎn)向哪里?答:(1) 轉(zhuǎn)向L1(2) 轉(zhuǎn)向L1(3) 轉(zhuǎn)向L2(4) 轉(zhuǎn)向L5;因為加法指令后AX中已經(jīng)是6FF3H(5) 轉(zhuǎn)向L5;因為加法指令后AX中已經(jīng)是4A14H3.35 指令CMP AX, BX后面跟著一條格式為J L1的條件轉(zhuǎn)移指令,其中可以是B、NB、BE、NBE、L、NL、LE、NLE中的任意一個。如果AX和BX的內(nèi)容給定如下:AX BX(
48、1) 1F52H 1F52H(2) 88C9H 88C9H(3) FF82H 007EH (4) 58BAH 020EH(5) FFC5H FF8BH(6) 09A0H 1E97H(7) 8AEAH FC29H(8) D367H 32A6H問以上8條轉(zhuǎn)移指令中的哪幾條將引起轉(zhuǎn)移到L1?答:(1) JNB、JBE、JNL、JLE(2) JNB、JBE、JNL、JLE(3) JNB、JNBE、JL、JLE(4) JNB、JNBE、JNL、JNLE(5) JNB、JNBE、JL、JLE(6) JB、JBE、JL、JLE(7) JB、JBE、JNL、JNLE(8) JNB、JNBE、JL、JLE3.3
49、6 假設(shè)X和X+2單元的內(nèi)容為雙精度數(shù)p,Y和Y+2單元的內(nèi)容為雙精度數(shù)q,(X和Y為低位字)試說明下列程序段做什么工作?MOV DX, X+2MOV AX, XADD AX, XADC DX, X+2CMP DX, Y+2JL L2JG L1CMP AX, YJBE L2L1: MOV AX, 1JMP SHORT EXITL2: MOV AX, 2EXIT:INT 20H答:此程序段判斷p*2q,則使(AX)=1后退出;p*2q,則使(AX)=2后退出。3.37 要求測試在STATUS中的一個字節(jié),如果第1、3、5位均為1則轉(zhuǎn)移到ROUTINE_1;如果此三位中有兩位為1則轉(zhuǎn)移到ROUTI
50、NE_2;如果此三位中只有一位為1則轉(zhuǎn)移到ROUTINE_3;如果此三位全為0則轉(zhuǎn)移到ROUTINE_4。試畫出流程圖,并編制相應(yīng)的程序段。全為0嗎?二位為1嗎?僅一位為1執(zhí)行ROUTINE_3轉(zhuǎn)去執(zhí)行ROUTINE_4NNYY3.44題的程序流程圖程序開始(AL)(STATUS)只保留第1,3,5位轉(zhuǎn)去執(zhí)行ROUTINE_2全為1嗎?NY轉(zhuǎn)去執(zhí)行ROUTINE_1執(zhí)行EXIT程序結(jié)束答:程序段如下:MOVAL, STATUSANDAL, 00010101B ;只保留第1、3、5位JZROUTINE_4 ;3位全為0轉(zhuǎn)ROUTINE_4JPEROUTINE_2 ;兩位為1轉(zhuǎn)ROUTINE_2CMPAL, 00010101BJZROUTINE_1 ;3位全為1轉(zhuǎn)ROUTINE_1ROUTINE_3: ;僅一位為1執(zhí)行ROUTINE_3JMPEXIT
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業(yè)隔斷裝修合同
- 2025酒店管理合同酒店管理協(xié)議書
- 2025年皮革化學(xué)品:浸水助劑項目合作計劃書
- 2025年P(guān)P-R再生料項目合作計劃書
- 2025年解熱鎮(zhèn)痛類藥物項目合作計劃書
- 2025年工業(yè)噪聲控制設(shè)備項目建議書
- 陡坡維修施工方案
- 降水位施工方案
- 執(zhí)業(yè)藥師2024年筆試考試題庫有答案分析
- 高級社會工作者職業(yè)資格筆試2024年考試題庫有答案分析
- 股東出資協(xié)議書(公司未成立之前注冊股期股回購)
- 21 青蛙賣泥塘(一等獎創(chuàng)新教案)
- 《礦業(yè)權(quán)評估指南》
- 專題01《水銀花開的夜晚》 高考語文二輪復(fù)習(xí)
- 電工日常巡視維修工程記錄
- GB/T 14388-1993木工硬質(zhì)合金圓鋸片
- 二月份循證護(hù)理查房課件
- JJF(湘) 09-2018 純水-超純水系統(tǒng)監(jiān)測儀表(電導(dǎo)率)計量校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 大一下【世界古代史】期末復(fù)習(xí)資料
- 腫瘤化學(xué)治療
- 尾礦庫筑壩施工組織方案
評論
0/150
提交評論