微机原理与接口技术 第四章 课后答案

更新时间:2023-11-06 01:38:01 阅读量: 教育文库 文档下载

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

第四章参考答案

1. 设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?错误的原因?

⑴MOV BP,AL

⑵MOV WORD_OP1,WORD_OP2 ⑶MOV SAVE_WODR,DS ⑷MOV SP,SS:DATA_WORD[BX][SI] ⑸MOV [BX][SI],2 解:(1)非法。源操作数与目的操作数类型不符。 (2)合法。

(3)合法。

(4)合法。

(5)非法。需说明操作数类型。

2. 设VAR1和VAR2为字变量,LAB为标号,

试指出下列指令的错误之处: ⑴ADD VAR1,VAR2 ⑵SUB AL,VAR1 ⑶JMP LAB[SI] ⑷JNZ VAR1 ⑸JMP NEAR LAB 解:(1)两个操作数均为符号地址。 (2)两个操作数的类型不同。

(3)

(4)

(5)

3.画图说明下列语句所分配的存储空间及初始化的数据值。

⑴BYTE_VAR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)

⑵WORD_VAR DW 5 DUP(0,1,2),?,-5 ‘BY’,’TE’,256H

解:(1) 41H (2)

59H 54H

45H 0CH F4H 00H

? 01H 02H 01H

02H 00H

? 01H 02H 01H

02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H ? ? FBH FFH 59H 42H 45H 54H 56H 02H

4.设程序中的数据定义如下:

PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ? PLENTH EQU $-PARTNO 问PLENTH的值为多少?它表示什么意义? 解:PLENTH的值为22(16H)。表示当前位置与PARTNO之间有22个字节空间。

5. 设程序中的数据定义如下:

LNAME DB 30 DUP(?) ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE_LIST DB 1,7,8,,3,2

⑴用一条MOV指令将LNAME的偏移地址放入AX;

⑵用一条指令将CODE_LIST的头两个字节的内容放入SI:

⑶写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。 解:(1)MOV AX,OFFSET LNAME (2)MOV SI,WORD CODE_LIST

(3) CODE_LENGTH EQU $-CODE_LIST

6. 对于下面数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

FLDB DB ? TABLEA DW 20 DUP(?) TABLEB DB ‘ABCD’ ⑴MOV AX,TYPE FLDB ⑵MOV AX,TYPE TABLEA ⑶MOV CX,LENGTH TABLEA ⑷MOV DX,SIZE TABLEA ⑸MOV CX,LENGTH TABLEB 解:(1)AX=1 (2)AX=2 (3)CX=14H (4)DX=28H (5)CX=1

7. 内存的一个区域中有100个字符是用小写字母表示的,试编写一个程序,把它们转换成大写字母,并送屏幕显示。 解:参考程序如下: MOV CX,0064H

AA:MOV DL,[SI] ADD DL,20H MOV [SI],DL MOV AH,02H INT 20H INC SI LOOP AA HLT

8.AX寄存器中有4位压缩方式的BCD码数字,试编写一个程序将4个数字分开,并分别存入BH、BL、CH和CL寄存器中。 ……

MOV DX,AX MOV CL,04H ROL AX,CL AND DX,0F0FH MOV BL,DH MOV CL,DL AND AX,0F0FH MOV BH,AL MOV CH,AH

……

9.编一段程序,使在用STRING开头的数据区中查找字符串WE,数据区以$符作为结束符号。如查到,给出字符所在地址;如查不到,给出NOT FOUND提示。(假设最多有1个WE字符串) 解:参考程序如下:

DATA SEGMENT

STRING:DB ‘ABCWE5$’

RE:DB ‘NOT FOUND$’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA BEGIN: PUSH DS

XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA SI,STRING

AA: MOV AL,[SI]

CMP AL,’$’ JZ NEXT

CMPA AL,’W’ JNZ NEXT1 INC SI

MOV AL,[SI] CMP AL,’E’ JNZ AA DEC SI MOV BX,SI

MOV CL,04H

MOV DH,04H AA1: ROL BX,CL

MOV DL,BL

AND DL,0FH MOV AH,02H INT 20H DEC DH JNZ AA1 JMP NEXT2 JMP AA

NEXT1: INC SI NEXT: LEA DX,RE MOV AH,09H

INT 20H

NEXT2: MOV AH,4CH INT 21H CODE: ENDS

END BEGIN

10. 从键盘输入的数字和字符都是以ASCII码方式存入内存,现要求从键盘输入两位16进制数,并在屏幕上显示出对应的二进制数。试编一个程序实现此功能。

解:参考程序段如下:

MOV AH,07H

INT 20H CMP AL,3AH JC BB SUB AL,07H

BB:SUB AL,30H MOV BH,AL

INT 20H

CMP AL,3AH JC BB1

SUB AL,07H BB1:SUB AL,30H

MOV BL,AL MOV CX,0016H

AA:SHL BX,1 JC NEXT1

MOV DL,’0’ MOV AH,02H INT 20H LOOP AA HLT

MOV AH,02H INT 20H

NEXT1:MOV DL,’1’

LOOP AA HLT

11.一个班级共有学生45人,在内存中有一个按学号排列的成绩表。试编一个程序,实现按成绩高低并注有学号的有序表,如果有成绩相同的则按学号先后排序。

解:假设:成绩表的起始地址符号:ABC,学号的起始地址符号:ABC1,参考程序段如下:

LEA SI,ABC

MOV DI,OFFSET ABC1 MOV CX,002DH DEC CX

AA:MOV BX,CX AA1:MOV AL,[SI]

CMP AL,[SI+1] JGE AA2

XCHG AL,[SI+1] MOV [SI],AL MOV AH,[DI] XCHG AH,[DI+1] MOV [DI],AH ADD DI,0001H LOOP AA1 MOV CX,BX LOOP AA HLT

AA2:ADD SI,0001H

12.编一个程序,使从键盘上输入一串字符,以回车符结束,然后按字母、数字和其它符号三类统计各自的个数,在屏幕上显示统计结果。

解:注释:以下程序中BL用于存放统计的字母个数,字母的ASCII码区间:41H~5AH及61H~7AH;BH用于存放统计的数字个数,数字的ASCII码区间:30H~39H;DH用于存放统计的其它符号的个数。

MOV BH,00H MOV SI,1000H AA:MOV AH,07H INT 20H

MOV [SI],AL CMP AL,’$’ JZ NEXT INC SI INC BH JMP AA MOV CH,00H

NEXT:MOV CL,BH

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

Top