微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第三章(部分答案)

第三章

1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。

    源操作数  目的操作数            源操作数                    目的操作数

(1)MOV AX, 2048H                   立即寻址                     寄存器寻址

(2) MOV CL, 0FFH                    立即寻址                     寄存器寻址

(3) MOV BX, [SI]                        寄存器间接寻址          寄存器寻址

(4) MOV 5[BX], BL                     寄存器寻址                  寄存器相对寻址

(5) MOV [BP+100H],AX             寄存器寻址                 寄存器相对寻址

(6) MOV [BX+DI], ‘$’                  立即寻址                     基址变址寻址

(7) MOV DX, ES:[BX+SI]           基址变址寻址              寄存器寻址

(8) MOV VAL[BP+DI], DX          寄存器寻址                  相对基址加变址寻址

(9) IN AL, 05H                            直接寻址                      寄存器寻址

(10) MOV DS, AX                       寄存器寻址                  寄存器寻址

2. 已知:DS=1000H, BX=0200H, SI=02H, 内存 10200H~10205H 单元的内容分别为 10H, 2AH, 3CH, 46H, 59H, 6BH。下列每条指令执行完后 AX 寄存器的内容各是什么?

(1)MOV AX, 0200H                                    (AX)=0200H

(2) MOV AX, [200H]                                   (AX)=2A10H

(3) MOV AX, BX                                         (AX)=0200H

(4) MOV AX, 3[BX]                                     (AX)=5946H

(5) MOV AX, [BX+SI]                                 (AX)=463CH

(6) MOV AX, 2[BX+SI]                               (AX)=6B59H

6.指出下列指令中哪些是错误的,错在什么地方

(1)MOV DL, AX                                     错误,源和目的操作数类型不匹配,DL 是 8 位寄存器,AX 是 16 位寄存器。

(2)MOV 8650H, AX                                   错误,立即数不能作为目的操作数。

(3)MOV DS, 0200H                                   错误,不能用立即数直接给段寄存器赋值。

(4)MOV [BX], [1200H]                               错误,MOV 不能在两个存储单元之间直接传送数据

(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 端口地址。

8. 已知当前数据数据段中有一个十进制数字 0~9 的 7 段码表,其数值依次为 C0H, F9H, A4H, B0H, 99H, 92H, 82H, F8H, 80H, 98H。要求用 XLAT 指令将十进制数 57 转换成相应的7 段码值,存到 BX 寄存器中,试写出相应的程序段。

解:

DATA SEGMENT

 TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 98H

DATA ENDS

……

MOV AL, 5

MOV BX, OFFSET TABLE

XLAT

MOV DL,AL

MOV AL, 7

XLAT

MOV BL,AL

MOV BH,DL

HLT

调试程序:

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS

DATA SEGMENT

 TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 98H

DATA ENDS

CODE SEGMENT

 ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

 MOV DS,AX

 MOV AL, 5

 MOV BX, OFFSET TABLE

 XLAT

 MOV DL,AL

 MOV AL, 7

 XLAT

 MOV BL,AL

 MOV BH,DL

 HLT

CODE ENDS

END START

11. 假设数据定义如下:

 DATA SEGMENT

 STRING DB ‘The Personal Computer & TV’

 DATA ENDS

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

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

解:程序段如下:

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

 LEA DI,GET_CHAR ;置目的串偏移地址

 MOV CX,26 ;置串长度

 CLD ;方向标志复位

 REP MOVSB ;字符串传送

 HLT

12.编程将 AX 寄存器中的内容以相反的次序传送到 DX 寄存器中,并要求 AX 中的内容不被破坏,然后统计 DX 寄存器中 1 的个数是多少。

解:将 AX 的内容用 ROR 循环右移,16 次之后 AX 的内容不变(如果用算术/逻辑右移

SHL/SAL,则 AX 的内容破坏,需要用堆栈 PUSHU AX/POP AX 保护),其最低位移入 CF

中,再使用 RCL 循环左移将 CF 中的值移入 DX 中。并且,如果 CF 的值为 1,则将 BL 加

1。

MOV CX, 16

XOR BL, BL

LP1: ROR AX, 1

JNC LP2

INC BL

LP2: RCL DX,1

LOOP LP1

HLT

调试程序:

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS

DATA SEGMENT

 BUF DW 12

 BUF1 DW 100 DUP (?)

DATA ENDS

CODE SEGMENT

 ASSUME CS:CODE,DS:DATA,SS:STACK

START: PUSH DS

MOV AX,DATA

 MOV DS,AX

 MOV AX,1234H

 MOV CX, 16

 XOR BL, BL

LP1: ROR AX, 1

 JNC LP2

 INC BL

LP2: RCL DX,1

 LOOP LP1

 HLT

CODE ENDS

END START

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

解:

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS

DATA SEGMENT

 ARRAY DB 7 DUP(?)

NEW DB 7 DUP(?)

DATA ENDS

CODE SEGMENT

 ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV CX, 7

 MOV BX, 0

LP1: MOV AL, ARRAY[BX]

 ADD AL, 05H

 DAA

 MOV NEW[BX], AL

 INC BX

 LOOP LP1

 HLT

CODE ENDS

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 ENDS

CODE SEGMENT

 ASSUME CS:CODE,DS:DATA,SS:STACK

START: 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[BX], AL

 INC BX

 LOOP LP1

 HLT

CODE ENDS

END START

  • 22
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
微型计算机原理接口技术》,是由周荷琴等人编撰的电子书,该书是关于微型计算机原理接口技术的内容。微型计算机作为一种小型计算机,具有体积小、功耗低、价格低廉等特点,广泛应用于各个领域。 该书的主要内容包括微型计算机系统的硬件组成、数据传输、中断系统、外设接口等方面的知识。通过对这些内容的学习,读者可以了解微型计算机的基本原理和工作方式,掌握微型计算机系统的硬件组成和工作流程,了解数据在微型计算机系统中的传输方式和中断系统的原理,以及掌握与外部设备的接口技术。 本书的特点是理论与实践相结合,通过大量的实例和实验案例,帮助读者理解和掌握微型计算机原理接口技术。此外,该书还介绍了一些常用的接口标准和技术,如串行接口、并行接口、通用串行总线(USB)等,使读者能够熟悉和掌握不同类型的接口技术。 总的来说,《微型计算机原理接口技术》这本电子书对于学习微型计算机原理接口技术的人来说是一本非常有用的参考书籍。它内容全面,实用性强,对于培养读者的计算机原理接口技术的能力具有很高的指导意义。对于计算机专业的学生以及从事相关工作的人员来说,阅读这本书将对其学习和工作有很大的帮助。同时,这本电子书也可在csdn网站上进行下载。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的极化恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值