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

2019-01-27 12:53

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

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA

MOV DS,AX ;CH3-14

LEA SI,DAT1 LEA DI,DAT2 MOV CX,128

AGAIN: MOV AL,[SI]

MOV [DI],AL

INC SI INC DI

LOOP AGAIN

;CH3-15,将两个数据块逐个单元进行比较,若有错 BL=00H,否则 BL=FFH

LEA SI,DAT1 LEA DI,DAT2 MOV CX,128 NEXT: MOV AL,[SI]

MOV BL,[DI]

CMP AL,BL JNZ ERROR INC SI INC DI

LOOP NEXT MOV BL,0FFH

JMP EXIT

ERROR: MOV BL,00H EXIT:

MOV AX,4C00H INT 21H

CODE ENDS END START

6.试编程序将当前数据区从 BUFF 开始的 4K 个单元中均写入 55H,并逐个单元读出比较,看写入的与读出的是否一致。若全对,则将 ERR 单元置 0H;如果有错,则将 ERR 单元置 FFH。解答:

DATA SEGMENT BUFF DB 1000H DUP(?)

- 16 -

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

ERR DATA ;

CODE

DB ? ENDS SEGMENT

CS:CODE,DS:DATA

ASSUME

START: MOV AX,DATA

MOV DS,AX

;将 55H 依次放入 BUFF 开始的 4K 个单元 LEA SI,BUFF

MOV CX,1000H MOV AL,55H NTXT: MOV [SI],AL INC SI

LOOP NEXT

;取出与 55H 比较,全对则 ERR=0,否则 ERR=FFH LEA DI,BUFF LEA SI,ERR

MOV CX,1000H NEXT1: MOV AL,[DI] INC DI CMP AL,55H

JNZ ERROR;若有一个不同,即置 ERR=FFH

LOOP NEXT1 MOV AL,00H

MOV [SI],AL;全比较完无错,则置 ERR=0 JMP EXIT ERROR: MOV AL,0FFH MOV [SI],AL ;返回 DOS

EXIT: MOV AH,4CH INT 21H CODE ENDS END START END

7.在上题中,如果发现有错时,要求在 ERR 单元中存放出错的数据个数,则程序该如何修改?解答:

DATA SEGMENT BUFF DB 1000H DUP(?) ERR DATA ; CODE

DW ? ENDS SEGMENT

CS:CODE,DS:DATA

ASSUME

START: MOV AX,DATA

- 17 -

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

MOV DS,AX

;将 55H 依次放入 BUFF 开始的 4K 个单元 LEA SI,BUFF

MOV CX,1000H MOV AL,55H NTXT: MOV [SI],AL INC SI

LOOP NEXT ;取出与 55H 比较 LEA DI,BUFF

LEA SI,ERR MOV DX,0000H MOV CX,1000H NEXT1: MOV AL,[DI] INC DI CMP AL,55H

JZ

NEXT2;若相同,则比较下一个 INC DX;否则将放出错个数的 DX 加 1

NEXT2: LOOP NEXT1 MOV

[SI],DX ;

EXIT:

MOV AH,4CH

INT 21H CODE ENDS END START END

8.试编写程序段,完成将数据区从 0100H 开始的一串字节数据逐个从 F0H 端口输出,已知数据串以 0AH 为结束符。解答: DATA SEGMENT ORG 0100H

DATA1 DB N DUP(?) DATA ; CODE

ENDS SEGMENT

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

;将 DATA1 数据串中的数据取出并从 F0H 端口中输出 LEA SI,DATA1 MOV CX,N MOV BL,0AH NTXT: MOV AL,[SI]

- 18 -

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

CMP JZ OUT INC

AL,BL EXIT 0F0H,AL SI

LOOP NEXT

;返回 DOS

EXIT: MOV AH,4CH INT CODE END END

9.(24)内存中以 FIRST 和 SECOND 开始的单元中分别存放着两个 4 位用压缩 BCD 码表示的十进制数, 低位在前。编程序求这两个数的和,仍用压缩 BCD 码表示, 并存到以 THIRD 开始的单元。解答: DATA SEGMENT FIRST DW 3412H SECOND DW 7856H THIRD DB ?,?,? DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA

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

AGAIN: MOV AL,BYTE PTR[SI]

MOV DL,BYTE PTR[DI] ADC AL,DL

DAA

MOV BYTE PTR[BX],AL INC SI INC DI INC BX

LOOP AGAIN

- 19 -

21H ENDS START

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

JC AA

MOV BYTE PTR[BX],0

AA:

JMP EXIT

MOV BYTE PTR[BX],1

EXIT: MOV AX,4C00H

INT 21H CODE ENDS END START

10.(27)设字变量单元 A、B、C 存放有三个数,若三个数都不为零,则求三个数的和,存放在 D 中;若有一个为零,则将其余两个也清零,试编写程序。 解答:

DATA SEGMENT A DB ? B DB ? C DB ? D DW ? DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA

MOV DS,AX LEA LEA MOV CMP JZ ADC LEA

SI,A DI,D AL,[SI] AL,00 ZERO DX,AL SI,B

MOV AL,[SI] CMP AL,00 JZ ZERO ADC LEA

DX,AL SI,C

MOV AL,[SI] CMP AL,00 JZ ZERO

- 20 -


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

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

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

马上注册会员

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