ibm-pc匯編語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案
ibm-pc匯編語(yǔ)言課后答案
(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=7FFFH
1.2 將下列二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)和十進(jìn)制數(shù):
(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111
答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128
(3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255
1.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=4660
1.4 完成下列十六進(jìn)制數(shù)的運(yùn)算,并轉(zhuǎn)換為十進(jìn)制數(shù)進(jìn)行校核:
(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F
1.5 下列各數(shù)均為十進(jìn)制數(shù),請(qǐng)用8位二進(jìn)制補(bǔ)碼計(jì)算下列各題,并用十六進(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 1100B=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 0100B=0101 1111B=5FH;CF=0;OF=1
(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0
1.6 下列各數(shù)為十六進(jìn)制表示的8位二進(jìn)制數(shù),請(qǐng)說(shuō)明當(dāng)它們分別被看作是用補(bǔ)碼表示的帶符號(hào)數(shù)或無(wú)符號(hào)數(shù)時(shí),它們所表示的十進(jìn)制數(shù)是什么?
(1) D8 (2) FF
答:(1) D8H表示的帶符號(hào)數(shù)為 -40,D8H表示的無(wú)符號(hào)數(shù)為216;
(2) FFH表示的帶符號(hào)數(shù)為 -1, FFH表示的無(wú)符號(hào)數(shù)為255。
1.7 下列各數(shù)均為用十六進(jìn)制表示的8位二進(jìn)制數(shù),請(qǐng)說(shuō)明當(dāng)它們分別被看作是用補(bǔ)碼表示的數(shù)或字符的ASCII碼時(shí),它們所表示的十進(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 請(qǐng)寫(xiě)出下列字符串的ASCII碼值。
For example,
This is a number 3692.
答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH 54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H 72H 20H 33H 36H 39H 32H 2EH 0AH 0DH
第二章
2.1在80x86微機(jī)的輸入/輸出指令中,I/O端口號(hào)通常是由DX寄存器提供的,但有時(shí)也可以在指令中直接指定00~FFH的端口號(hào)。試問(wèn)可直接由指令指定的I/O端口數(shù)。
答:可直接由指令指定的I/O端口數(shù)為256個(gè)。
2.2 有兩個(gè)16位字1EE5H和2A3CH分別存放在80x86微機(jī)的存儲(chǔ)器的000B0H和000B3H單元中,請(qǐng)用圖表示出它們?cè)诖鎯?chǔ)器里的存放情況。
答:存儲(chǔ)器里的存放情況如右下圖所示: 000B0H E5H 000B1H 1EH 000B2H
000B3H 3CH 000B4H 2AH
2.3在IBM PC機(jī)的存儲(chǔ)器中存放信息如右下圖所示。試讀出30022H和30024H字節(jié)單元的內(nèi)容,以及30021H和30022H字單元的內(nèi)容。
30020H 12H 30021H 34H 30022H ABH 30023H CDH 30024H EFH
答:30022H字節(jié)單元的內(nèi)容為ABH;30024H字節(jié)單元的內(nèi)容為EFH。
30021H字單元的內(nèi)容為AB34H;30022H字單元的內(nèi)容為CDABH。
2.4 在實(shí)模式下,段地址和偏移地址為3017:000A的存儲(chǔ)單元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?
答:3017:000A、3015:002A和3010:007A的存儲(chǔ)單元的物理地址都是3017AH。
2.5 如果在一個(gè)程序開(kāi)始執(zhí)行以前(CS)=0A7F0H,(如16進(jìn)制數(shù)的最高位為字母,則應(yīng)在其前加一個(gè)0) (IP)=2B40H,試問(wèn)該程序的第一個(gè)字的物理地址是多少?
答:該程序的第一個(gè)字的物理地址是0AAA40H。
2.6在實(shí)模式下,存儲(chǔ)器中每一段最多可有10000H個(gè)字節(jié)。如果用調(diào)試程序DEBUG的r命令在終端上顯示出當(dāng)前各寄存器的內(nèi)容如下,請(qǐng)畫(huà)出此時(shí)存儲(chǔ)器分段的示意圖,以及條件標(biāo)志OF、SF、ZF、CF的值。
AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC
答:此時(shí)存儲(chǔ)器分段的示意圖如右圖所示。OF、SF、ZF、CF的值都為0。
2.7 下列操作可使用那些寄存器? (1) 加法和減法 數(shù)據(jù)寄存器等 (2) 循環(huán)計(jì)數(shù) CX
(3) 乘法和除法 AX、DX,乘數(shù)和除數(shù)用其他寄存器或存儲(chǔ)器
(4) 保存段地址 段寄存器 (5) 表示運(yùn)算結(jié)果為0 ZF=1 (6) 將要執(zhí)行的指令地址 CS:IP
(7) 將要從堆棧取出數(shù)據(jù)的地址 SS:SP
答:答案見(jiàn)題目的右邊。
2.8 那些寄存器可以用來(lái)指示存儲(chǔ)器地址?
答:BX、BP、SI、DI、堆棧操作時(shí)的SP、對(duì)應(yīng)的段地址、386及其后繼機(jī)型的Exx。
2.9 請(qǐng)將下列左邊的項(xiàng)和右邊的解釋聯(lián)系起來(lái)(把所選字母放在括號(hào)中):
(1) CPU (M) A.保存當(dāng)前棧頂?shù)刂返募拇嫫鳌?/p>
(2) 存儲(chǔ)器 (C) B.指示下一條要執(zhí)行的指令的地址。
(3) 堆棧 (D) C.存儲(chǔ)程序、數(shù)據(jù)等信息的記憶裝置,微機(jī)有RAM和ROM兩種。
(4) IP (B) D.以后進(jìn)先出方式工作的存儲(chǔ)空間。
(5) SP (A) E.把匯編語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序的系統(tǒng)程序。
(6) 狀態(tài)標(biāo)志 (L) F.唯一代表存儲(chǔ)空間中每個(gè)字節(jié)單元的地址。
(7) 控制標(biāo)志 (K) G.能被計(jì)算機(jī)直接識(shí)別的語(yǔ)言。
(8) 段寄存器 (J) H.用指令的助記符、符號(hào)地址、標(biāo)號(hào)等符號(hào)書(shū)寫(xiě)程序的語(yǔ)言。
(9) 物理地址 (F) I.把若干個(gè)模塊連接起來(lái)成為可執(zhí)行文件的系統(tǒng)程序。
(10) 匯編語(yǔ)言 (H) J.保存各邏輯段的起始地址的寄存器,8086/8088機(jī)有四個(gè):CS、DS、 SS、ES。
(11) 機(jī)器語(yǔ)言 (G) K.控制操作的標(biāo)志,如DF位。
(12) 匯編程序 (E) L.記錄指令操作結(jié)果的標(biāo)志,共6位:OF、SF、ZF、AF、PF、CF。
(13) 連接程序 (I) M.分析、控制并執(zhí)行指令的部件,由算術(shù)邏輯部件ALU和寄存器等 組成。
(14) 指令 (O) N.由匯編程序在匯編過(guò)程中執(zhí)行的指令。
(15) 偽指令 (N) O.告訴CPU要執(zhí)行的操作(一般還要指出操作數(shù)地址),在程序運(yùn)行時(shí) 執(zhí)行。
答:答案見(jiàn)題目的括號(hào)中。
第三章
3.1 給定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什么? (1) 立即尋址 (2) 直接尋址
(3) 使用BX的寄存器尋址 (4) 使用BX的簡(jiǎn)接尋址
(5) 使用BX的寄存器相對(duì)尋址 (6) 基址變址尋址 (7) 相對(duì)基址變址尋址
答:(1) 操作數(shù)在指令中,即立即數(shù); (2) EA=D=7237H;
(3) 無(wú)EA,操作數(shù)為(BX)=637DH; (4) EA=(BX)=637DH; (5) EA=(BX)+D=0D5B4H; (6) EA=(BX)+(SI)=8E18H; (7) EA=(BX)+(SI)+D=1004FH;超過(guò)了段的邊界,最高進(jìn)位位丟失,因此EA=004FH。
3.2 試根據(jù)以下要求寫(xiě)出相應(yīng)的匯編語(yǔ)言指令
(1) 把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中。
(2) 用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器中的一個(gè)字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL寄存器中。
(3) 用寄存器BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和(CX)相加,并把結(jié)果送回存儲(chǔ)器中。
(4) 用位移量為0524H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)2A59H相加,并把結(jié)果送回存儲(chǔ)單元中。
(5) 把數(shù)0B5H與(AL)相加,并把結(jié)果送回AL中。
答:(1) ADD DX, BX (2) ADD AL, [BX][SI] (3) ADD [BX+0B2H], CX
(4) ADD WORD PTR [0524H], 2A59H (5) ADD AL, 0B5H
3.3 寫(xiě)出把首地址為BLOCK的字?jǐn)?shù)組的第6個(gè)字送到DX寄存器的指令。要求使用以下幾種尋址方式:
(1) 寄存器間接尋址 (2) 寄存器相對(duì)尋址 (3) 基址變址尋址
