微型计算机原理及应用答案汇总(3)

2019-01-27 12:53

微型计算机原理习题参考答案

(3) SAL (4) SAR (5) ROR (6) ROL (7) RCR (8) RCL DH,1 DX,CL DX,CL DL,CL DL,1 DX,CL DX=1001 0010 1011 1001(92B9H) DX=1111 1001 0011 0111(F937H) DX=0011 1001 0011 0111(3937H) DX=1100 1001 1100 1101(C9CDH) DX=1100 1001 1101 1100(C9DCH) DX=0100 1101 1100 1011(4DCFH) 8.已知 DX=1234H,AX=5678H,试分析下列程序执行后 DX、AX 的值各是什么?该程序完成了什么功能?

MOV CL,4 SHL DX,CL MOV BL,AH SHL BL,CL SHR BL,CL

OR DL,BL

解答:DX=2345H,AX=6780H。该程序完成的功能如图所示,将 DX,AX 拼装成双字后,

左移四位。

DX 1 2 3 4 DX 2 3 4 0

AX 5 6 7 8 AX

6 7 8 0 2 3 4 5 6 7 8 0 DX AX

9.试分析下列程序段:

ADD JNC SUB JNC JMP

AX,BX L2 AX,BX L3 SHORTL5

BX

如果 AX、BX 的内容给定如下: AX

(1)14C6H 80DCH

(2)B568H 54B7H

问该程序在上述情况下执行后,程序转向何处?

解答:(1)AX=AX+BX=14C6H+80DCH=95A2H;CF=0;无进位,转移至 L2;

(2)方法同(1),略

- 11 -

微型计算机原理习题参考答案

10.编写一段程序,比较两个 5 字节的字符串 OLDS 和 NEWS,如果 OLDS 字符串不同于

NEWS 字符串,则执行 NEW_LESS,否则顺序执行。

解答:编程如下,(说明:左测程序为常规编法,两个字符串在一个数据段中;右测的程序

要求 OLDS 在数据段中,NEWS 在附加段中,利用串操作的指令是可行的)

LEA SI,OLDS; LEA DI,NEWS; MOV CX,5;

NEXT: MOV AL,[SI];

MOV BL,[DI]; CMP AL,BL; JNZ NEW_LESS; INC SI; INC DI; LOOP NEXT; ??

JMP EXIT

NEW_LESS:

??

EXIT: ??

EXIT:

LEA SI,OLDS LEA DI,NEWS MOV CX,5 CLD

REPE CMPSB JNZ NEW_LESS ?? JMP EXIT

NEW_LESS:

?? ??

11.若在数据段中从字节变量 TABLE 相应的单元开始存放了 0~15 的平方值,试写出包含

有 XLAT 指令的指令序列查找 N(0~15)的平方。(设 N 的值存放在 CL 中) 解答: MOV BX,OFFSET TABLE;LEA BX,TABLE

MOV CL,N MOV AL,CL XLAT

12.有两个双字数据串分别存放在 ASC1 和 ASC2 中(低字放低地址),求它们的差,结

果放在 ASC3 中(低字放低地址)。 ASC1 DW 578,400

ASC2 ASC3

DW 694,12

DW ?,?解答:编程如下, LEA SI,ASC1 LEA DI,ASC2 LEA BX,ASC3 MOV CX,2 CLC

NEXT: MOV AX,[SI] MOV

DX,[DI]

SBB AX,DX MOV [BX],AX INC SI

- 12 -

微型计算机原理习题参考答案

INC SI INC DI INC DI INC BX INC BX LOOP NEXT

CH03 汇编语言程序设计

习题与思考题

1.下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。 VAR1 VAR2 VAR3 VAR4

DB DW DD

10,2

5 DUP(?),0 -1,1,0

DB ‘HOW ARE YOU?’,3 DUP(1,2)

解答:字节空间----VAR1:2;VAR2:12;VAR3:20;VAR4:12。 存储空间的分配图:

DS:0000

0010

0020

0A 02 00 00 00 00 00 00—00 00 00 00 00 00 48 57 20 20 41 52 45 20 20—59 4F 55 3F 01 02 01 01 02 FF FF FF FF 01 00—00 00 00 00 00 00

4F 02

2.假定 VAR1 和 VAR2 为字变量,LAB 为标号,试指出下列指令的错误之处。 (1)ADD (3)JMP (5) MOV 寄存器;

VAR1,VAR2 LAB[CX]

[1000H],100 (6)SHL

(2)SUB (4)JNZ

AL,VAR1 VAR1

AL, 4 解答:(1)两个操作数中至少有一个为

(2)AL 为字节,VAR1 为字变量,不匹配; (3)[]中不能用 CX,LAB 为标号,非变量; (4)转向地址应为标号,不能是变量; (5)目的操作数的类型不确定;

(6)SHL 指令中,当所移位数超过 1 时,必须用 CL 或 CX 来取代所移位数。 3.对于下面的符号定义,指出下列指令的错误。

A1 DB ? A2 DB 10

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

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

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

(2)A1 为字节,AX 为字变量,不匹配; (3)A1 未定义,无法做比较指令; (4)K1 重新赋值前,必须用 PURGE 释放。

- 13 -

微型计算机原理习题参考答案

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

FIRST DB SECOND DB 90H,5FH,6EH,69H 5 DUP(?)

THIRD DB 5 DUP(?) 自 FIRST 单元开始存放的是一个四字节的十

六进制数(低位字节在前),要求:

编一段程序将这个数左移两位后存放到自 SECOND 开始的单元,右移两位后存放到自 THIRD 开始的单元。(注意保留移出部分) 解答: DATA

SEGMENT

FIRST DB 90H,5FH,6EH,69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) ENDS

SEGMENT

DATA CODE

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AX LEA SI,FIRST LEA DI,SECOND MOV CX,2 CLC

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

MOV DX,[SI];DX=696EH 为高十六位数据 PUSH DX;保存原有的高十六位数据 PUSH AX;保存原有的低十六位数据

ROL DX,CL;将高位数据不带进位循环左移两位,即高 2 位数据在 DL 的低 2 位 AND DL,03H;让 DL 中仅保存移出的高 2 位数据

;左移 2 位

MOV [DI+4] ,DL;将移出的高 2 位数据放入 SECOND 中的最高单元中 ROL AX,CL;将低位数据不带进位循环左移两位,即 AX 的高 2 位在 AL 的低 2 位 AND AL,03H;让 AL 中仅保存移出的 AX 高 2 位数据 MOV BL ,AL;将 AL 中的数据放入 BL 中保存 POP POP

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

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

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

MOV [DI] ,AX MOV [DI+2] ,DX ;右移 2 位

- 14 -

微型计算机原理习题参考答案

CODE END

LEA SI,FIRST LEA DI,THIRD MOV CX,2 CLC

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

MOV DX,[SI];DX=696EH 为高十六位数据 PUSH DX;保存原有的高十六位数据 PUSH AX;保存原有的低十六位数据

ROR AX,CL;将低位数据不带进位循环右移两位,即低 2 位数据在 AH 的高 2 位 AND AH,0C0H;让 AH 中仅保存移出的低 2 位数据 PUSH CX MOV SHR POP

CX,6 AH,CL CX

MOV [DI] ,AH;将移出的低 2 位数据放入 THIRD 中的最低单元中 ROR DX,CL;将低位数据不带进位循环左移两位,即 AX 的高 2 位在 AL 的低 2 位 AND DH,0C0H;让 DH 中仅保存移出的 DX 低 2 位数据 MOV BL ,DH;将 DH 中的数据放入 BL 中保存 POP POP

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

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

OR AH,BL;将 DX 中移出的低 2 位数据放入 AX 的高 2 位 MOV [DI+1] ,AX MOV [DI+3] ,DX MOV AH,4CH INT 21H ENDS START

5.(14)在当前数据区从 400H 开始的 256 个单元中存放着一组数据,试编程序将它们顺序搬移到从 A000H 开始的顺序 256 个单元中。 解答:

DATA SEGMENT

ORG 400H

DAT1 DB ...;256 DUP (?) ORG

0A000H

DAT2 DB ...;256 DUP (?) DATA ENDS ;

- 15 -


微型计算机原理及应用答案汇总(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:食用油检测毕设论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: