微机原理与接口技术(第二版)课后习题答案完整版 下载本文

微机原理与接口技术(第二版)

清华大学出版社

(6) SHL 指令中,当所移位数超过 1 时,必须用 CL 取代所移位数。

3.对于下面的符号定义,指出下列指令的错误。

A1DB ?

A2 DB 10

K1 EQU 1024

(1) MOV K1 ,AX (2)MOV A1 ,AX

(3)CMP A1, A2 (4)K1 EQU 2048

答: (1)K1 为常量,不能用 MOV 指令赋值;

(2)A1 为字节, AX 为字变量,类型不一致;

(3)A1 和 A2 同为存储器寻址方式,不符合语法规则;

(4)K1 重新赋值前,必须用 PURGE 释放。

4.数据定义语句如下所示 :

FIRST DB 90H ,5FH , 6EH , 69H

SECOND DB 5 DUP(?)

THIRD DB 5 DUP(?)

FORTH DB 4 DUP (?)

自 FIRST 单元开始存放的是一个四字节的十六进制数 (低位字节在前 ),要求 : 编一段程序将这个数左移两位后存放到自 SECOND 开始的单元 ,右移两位后存放到自 THIRD 开始的单元 ,求补后放到 FORTH 开始的单元。 (注意保留移出部

分 )

答:

DATA SEGMENT

FIRST DB 90H , 5FH , 6EH , 69H

SECOND DB 5 DUP(?)

THIRD

DB 5 DUP(?)

FORTH DB 4 DUP (?)

DATA ENDS

CODE SEGMENT

13

微机原理与接口技术(第二版)

清华大学出版社

ASSUME CS : CODE , DS: DATA

START : MOV AX , DATA

2 位

低 2 位

MOV

DS, AX LEA

SI, FIRST LEA

DI , SECOND

MOV CX ,2

CLC

;左移2位

MOV

AX , WORD PTR [SI] ;AX=5F90H 为低十六位数据

INC SI

INC SI

MOV

DX , WORD PTR [SI] ;DX=696EH 为高十六位数据

PUSH DX

;保存原有的高十六位数据 PUSH AX

;保存原有的低十六位数据

ROL

DX ,CL

;将高位数据不带进位循环左移两位,

即高 2 位数据在

DL 的低

AND

DL , 03H ;让 DL 中仅保存移出的高 2 位数据

MOV

[DI+4] , DL ;将移出的高 2 位数据放入 SECOND 中的最高单元中 ROL

AX ,CL

;将低位数据不带进位循环左移两位,即

AX 的高2位在AL

的AND AL , 03H;让 AL 中仅保存移出的 AX 高2 位数据 MOV

BL ,AL ;将 AL

中的数据放入 BL 中保存

POP AX ;弹出原有的低十六位数据 POP DX ;弹出原有的高十六位数据

SHL DX , CL ;将高位数据算术逻辑左移 2 位 SHL AX , CL ;将低位数据算术逻辑左移 2 位

OR DL,BL ;将 AX 中移出的高 2 位数据放入 DX 的低 2 位

MOV

WORD PTR [DI] , AX MOV

WORD

PTR

[DI+2] ,DX

14

微机原理与接口技术(第二版)

清华大学出版社

;右移2位

LEA

SI, FIRST DI , THIRD CX ,2

LEA

MOV

CLC

MOV AX ,WORD

PTR [SI] ; AX=5F90H 为低十六位数据

INC SI

INC SI

MOV PUSH PUSH ROR

DX , WORD PTR [SI] ; DX=696EH 为高十六位数据

DX ;保存原有的高十六位数据 AX ;保存原有的低十六位数据

AX ,CL ;将低位数据不带进位循环右移两位,即低

2 位数据在 AH

高 2 位

AND PUSH MOV SHR POP MOV ROR

AH , 0C0H ;让 AH CX CX ,6

中仅保存移出的低 2 位数据

AH ,CL CX

[DI] , AH DX, CL

;将移出的低 2 位数据放入 THIRD

中的最低单元中

;将低位数据不带进位循环左移两位,即

AX 的高 2

位在 AL 的

低 2 位

AND MOV POP POP SHR SHR OR MOV MOV

DH , 0C0H BL ,DH AX DX

;让 DH 中仅保存移出的 DX 低2位数据

;将 DH 中的数据放入 BL 中保存 ;弹出原有的低十六位数据 ;弹出原有的高十六位数据 ;将高位数据算术逻辑左移 ;将低位数据算术逻辑左移

DX ,CL AX ,CL AH ,BL WORD WORD

PTR PTR

2 位 2 位

;将 DX 中移出的低 2 位数据放入 AX

[DI+1] , AX [DI+3] , DX

的高 2 位

15

微机原理与接口技术(第二版)

清华大学出版社

;求补

LEA LEA MOV INC SI INC SI MOV XOR XOR CLC ADD ADC MOV MOV

SI, FIRST DI , FORTH AX , WORD

PTR [SI]

; AX=5F90H 为低十六位数据

DX , WORD AX , 0FFFFH

PTR [SI]

; DX=696EH 为高十六位数据 ;将低十六位取反 ;将高十六位按位取反

DX , OFFFFH

AX , 01H DX,0 WORD WORD

;低位加 1,即可为原数的求补 ;高位加低位加法时的进位

PTR PTR

[DI] , AX [DI+2] ,DX

MOV AH ,4CH

INT 21H

CODE ENDS

END START

5. 试编程序将内存从 40000H 到 4BFFFH 的每个单元中均写入 55H,并再逐个

单元读出比较,看写入的与读出的是否一致。若全对,则将

AL 置 7EH; 只

要有错,则将 AL 置 81H 。

答:

DATA SEGMENT

DA1 DB

55H

CODE

SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV MOV MOV

AX,4000H

DS,AX

CX,0C000H BX,0000H

MOV

16