《微机原理与接口技术》周何琴课后习题答案 联系客服

发布时间 : 星期四 文章《微机原理与接口技术》周何琴课后习题答案更新完毕开始阅读4ecf7112250c844769eae009581b6bd97e19bc3d

(5)MOV IP, 0FFH 错误,IP不能作目的操作数或不能用立即数直接给IP寄存器赋值。

(6)MOV [BX+SI+3], IP 错误,IP不能作源操作数。

(7) MOV AX, [BX][BP] 错误,基址变址寻址方式必须是一个基址寄存器与一个变址寄存器,

不能两个同时为基址寄存器(BX、BP均为基址寄存器)。

(8)MOV AL, ES:[BP] 正确。

(9)MOV DL, [SI][DI] 错误,基址变址寻址方式必须是一个基址寄存器与一个变址寄存器,

不能两个同时为变址寄存器(SI、DI均为变址寄存器)。

(10)MOV AX, OFFSET 0A20H 错误,OFFSET后必须是存储单元标号地址,不能是立即数。

(11) MOV AL, OFFSET TABLE 错误,操作数类型不匹配,AL为8位, TABLE为16位。

(12)XCHG AL, 50H 错误,交换指令XCHG的操作数不能是立即数。

(13)IN BL, 05H 错误,IN指令的目的操作数必须是累加器

(14)OUT AL, 0FFEH 错误,OUT指令的源操作数必须是累加器,目的操作数为8位I/O端

口地址或用DX做桥梁的16位I/O端口地址。

10. 已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果是什么?标志位CF等于什么?

(1)AND AH,CL (AH)=04H CF=0(2)OR BL,30H (BL)=36H CF=0

(3)NOT AX (AX)=0DAF7H CF不变(不影响CF)(4)XOR CX,0FFF0H (CX)=0FFF4H CF=0(5)TEST DH,0FH (DH)=18H CF=0(6)CMP CX,00H (CX)=0004H CF=0(7)SHR DX,CL (DX)=0186H CF=0(8)SAR AL,1 (AL)=04H CF=0(9)SHL BH,CL (BH)=0F0H CF=0

(10)SAL AX,1 (AX)=4A10H CF=0

(11)RCL BX,1 CF=1,(BX)=1E6DH, CF=0,(BX)=1E6CH CF=0

(12)ROR DX,CL (DX)=4186H CF=011. 假设数据定义如下:

DATA SEGMENT DATA ENDS

STRING DB ‘The Personal Computer & TV’

试用字符串操作指令编程完成以下功能:解:程序段如下:

(1)把该字符串传送到附加段中偏移地址为GET_CHAR开始的内存单元中。

LEA SI,STRING ;置源串偏移地址

5

LEA DI,GET_CHAR ;置目的串偏移地址 MOV CX,26 ;置串长度 CLD ;方向标志复位 REP MOVSB ;字符串传送统计DX寄存器中1的个数是多少。

12.编程将AX寄存器中的内容以相反的次序传送到DX寄存器中,并要求AX中的内容不被破坏,然后

解:将AX的内容用ROR循环右移,16次之后AX的内容不变(如果用算术/逻辑右移SHL/SAL,则AX的内容破坏,需要用堆栈PUSHU AX/POP AX保护),其最低位移入CF中,再使用RCL循环左移将CF中的值移入DX中。并且,如果CF的值为1,则将BL加1。

MOV CX, 16

LP1: ROR AX, 1

JNC LP2INC BL

XOR BL, BL

LP2: RCL DX,1

HLT

调试程序:

LOOP LP1

STACK SEGMENT STACK

DB 100 DUP(?)STACK ENDS

DATA SEGMENT BUF DW 12DATA ENDS

BUF1 DW 100 DUP (?) CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS

MOV AX,DATA

MOV DS,AX MOV CX, 16 XOR BL, BLLP1: ROR AX, 1 JNC LP2 INC BL MOV AX,1234H

LP2: RCL DX,1 HLT

LOOP LP1CODE ENDS

END START

15. 某班有七个同学的英语成绩低于80分,分数存在ARRAY数组中,试编程完成以下工作:给每人加5

6

分,结果存到NEW数组中.解:

STACK SEGMENT STACK

DB 100 DUP(?)STACK ENDS

DATA SEGMENT

ARRAY DB 7 DUP(?)DATA ENDS

NEW DB 7 DUP(?)CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV CX, 7 MOV BX, 0

LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA

MOV NEW[BXI], AL INC BX HLTCODE ENDS

调试程序:

LOOP LP1

END START

STACK SEGMENT STACK

DB 100 DUP(?)STACK ENDS

DATA SEGMENT

ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) BUF1 DW 100 DUP (?) DATA ENDSCODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS

MOV AX,DATA

MOV DS,AX MOV CX, 7 MOV BX, 0

LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA

MOV NEW[BXI], AL INC BX LOOP LP1

7

HLT

CODE ENDS

END START

某班有七个同学的英语成绩低于80分,分数存在ARRAY数组中,试编程完成以下工作:

(1)给每人加5分,结果存到NEW数组中(2)把总分存到SUM单元中

(3)把平均分存到AVERAGE单元中

解:

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS

DATA SEGMENT

ARRAY DB 7 DUP(?)

NEW DB 7 DUP(?)

SUM DW 0

AVG DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV CX, 7 MOV SI, 0

MOV SUM, 0

MOV AH, 0

LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA

MOV NEW[SI], AL ADD AL ,SUM DAA

MOV SUM,AL ADC AH, 0

DAA

MOV SUM+1, AH INC SI

LOOP LP1

MOV AX, SUM MOV BL,07H DIV BL

MOV AVG, AL

HLT

CODE ENDS

8