微机原理陈慈发版习题答案04

更新时间:2023-10-30 21:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第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

4. 12. BUFF‘ABD$QC%$A?XYZ’

CONT EQU $-BUFF

?

CLD

LEA DI,BUFF MOV CX,CONT MOV AL,‘$’ XOR DX,DX

NEXT: REPNZ SCA,SB

CMP CX,0 JZ K1 INC DX JMP NEXT

K1: ?

上述程序段运行后,DX中的值表示的意义是什么? 解:

DX中为$个数

4. 13. 设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。 DATA SEGMENT A DB1,2,3,4,5,6,7,8,9,0AH

DRG OO10H

B DB 0AH,9,8,7,6,5,4,3,2,1 DATA ENDS

?

LEA SI,A LEA DO,B MOV CX,10

LOP: LODSB

XCHG AL,[DI] DEC DI STOSB

INC DI LOOP LOP

解:

XCHG SI, DI XCHG SI, DI

4. 14. 现有一子程序:

SUB1 PROC

TEST AL,80H JE PLUS

TEST BL,80H JNE EXITO JMP XCHANGE

PLUS: TEST BL,80H

JE EITO

XCHANGE: XCHG AL,BL EWITO: RET SUB1 ENDP 试回答:

(1) 子程序的功能是什么?

(2) 如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=?BL=? 解:

(1) 测试AL, BL两数的符号,如为同号直接返回,如为异号,则AL与BL交换

(2) AL=77H, BL=9AH

4. 15. 编写一程序段,将AL中的第7和0位,第6和1位,第5和2位,第4和3位互换。 解:

MOV CX, 8

MOV AH, 0

K1: SHR AL, 1 RCL AH, 1 DEC CX JNZ K1

MOV AL,AH

4. 16. 试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母‘A’~‘Z’ 解:

MOV AL, ‘A’

MOV DI, OFFSET CHAR MOV CX, 26

LOP: MOV [DI], AL INC AL INC DI LOOP LOP

4. 17. 设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):

本文来源:https://www.bwwdw.com/article/9gi2.html

Top