第4章习题解答
4.1 画出下列语句中的数据在存储器中的存储情况。 ARRAYB DB 63,63H,‘ABCD’,
3DUP(?),2 DUP(1,3)
ARRAYW DW 1234H,5,‘AB’,‘CD’,?,
2DUP(1,3)
解:
地址 数据 地址 ARRAYB 3FH 63H 41H 42H 43H 44H ? ? ? 01H 03H 01H 03H 34H 12H 05H 00H
4. 2. 程序中数据定义如下:
DATA1 DW ?
DATA2 DB 32DUP(?) DATA3 DD ?
DLENGTH EQU $-DATA1 此时DLENGTH的值是多少? 解:
DLENGTH=38=26H
4. 3. 程序中数据定义如下:
ARRAY DB ‘ABCDEF’ RESULT DB ?
TABLE DW 20 DUP(?)
则执行指令 MOV AX,TYPE RESULT后,AX=?
数据 42H 41H 44H 43H ? ? 01H 00H 03H 00H 01H 00H 03H 00H MOV BX,TYPE TABLE后,BX=? MOV CX,LENGTH TABLE后,CX=? MOV DX,LENGTH ARRAY后,DX=? MOV SI,SIZE TABLE后,SI=? MOV DI,SIZE ARRAY后,DI=?
解:
AX=1; BX=2; CX=20; DX=1; SI=40; DI=1
4. 4. 指令AND AX,7315H AND 0FFH中,两个AND有什么差别?这两个AND操作分别在什么时候执行? 解:
左为助记符,由CPU执行指令时运算; 右为运算符,由汇编程序在汇编时运算。
4. 5. 设BX=1034H,则执行下列指令
MOV AX,BX AND 0FFH MOV CX,BX EQ 1234H
后,AX和CX各为多少?若BX=1234H,则结果如何? 解:
AX=0034H; CX=0000H; AX=0034H;CX=FFFFH
4. 6. 设已知语句为:
ORG 0024H
DATA1 DW 4,12H,$+4
则执行指令MOV AX,DATA1+4后AX的值是多少? 解:
AX=002CH
4. 7. 已知数据定义语句为:
BUFFER DB 16 DUP(O,2DUP(1))
则其中字数据单元内容为0100H的单元数是多少? 解: 16个
4. 8. 要在以DA1为首址的数据区中依次存放下列数据;
‘A’,‘B’,O,0,‘C’,‘D’,0,0 请分别用DB、DW和DD语句实现。 解:
DAT DB ‘A’, ‘B’,0,0,’C’,’D’,0,0 DAT DW ‘BA’,0,’DC’,0 DAT DB ‘BA’,’DC’
4. 9. 试按下列要求在数据段中依次书写各数据定义语句:
(1) 以DA1为首字节的连接存储单元中存放20H个重复的数据序列:2,3, 10 个4,一个7。
(2) DA2为字符串变量,用字变量(DW)设置一字符串;‘STUDENTS’(按 此顺序存放在各单元中)
(3) 用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一语句。 解:
(1) DAT1 DB 20H DUP (2,3,10 DUP (4),7) (2) DAT2 DW ‘TS’, ‘DU’ ,’NE’,’ST’ (3) COUNT EQU DATA2-DATA1
4. 10. 下面程序段是实现从键盘输入十个一位10进数后累加。最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。
XOR BX,BX
LOP: MOV AH,01H ;键盘字符输入
INT 21H
MOV AH,BH ADD AL,BL
MOV BX,AX
解:
MOV CX, 10 AAA
4. 11. 下面程序段的功能是把DA1数据区的数0~9转换为对应的ASCII码。试完善本程序段。 DA1 DB OOH,O1H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT=ASCI-DA1
LEA SI,DA1 LEA DI,ADCI
LOP1: MOY AL,[SI]
MOV[DI],AL INC SI INC DI
LOOP LOP1
解:
MOV CX, COUT ADD AL, 30H