微机原理及接口技术第三章答案 - 范文中心

微机原理及接口技术第三章答案

01/21

3.1

MOV AX ,00H ; 立即寻址

SUB AX ,AX ; 寄存器寻址

MOV AX ,[BX]; 寄存器间接寻址

MOV AX ,TABLE ; 直接寻址

MOV AL ,ARAY1[SI]; 寄存器相对寻址

MOV AX ,[BX+6]; 寄存器相对寻址

3.2 若1KB 的数据存放在TABLE 以下,试编写程序将该数据拌到NEXT 之下。

程序片段如下:

ORG 100h

MOV CX,03FFH ;数据个数

LEA SI,TABLE ;源区首地址

LEA DI,NEXT ; 目的区首地址

AGAIN: MOV AL,[SI];

MOV [DI],AL; 搬移

INC SI

INC DI ; 移动地址指针

DEC CX ; 循环计数器递减

JNZ AGAIN ; 循环未结束转

HLT ; 暂停

TABLE DB 1024 dup ('A'); 源数据区

NEXT DB 1024 dup (0); 目的数据区

3.3 编写10个字(16位二进制数)之和的程序

ORG 100h

LEA SI,ADD1;

LEA DI,ADD2;

LEA BX,SUM;

MOV CL,CONT;

MOV CH,0; 循环初始化

CLC ; 进位清零

MADD1: MOV AX,[SI]; 读加数1

ADC AX,[DI]

ADD SI,2; 移动源区地址指针

ADD DI,2; 移动目的区地址指针

MOV [BX],AX; 回存计算结果

ADD BX,2; 移动“和”存储区地址指针

LOOP MADD1; 循环控制

HLT ; 暂停

ADD1 DB 0FEH,86H,7CH,44h,56H,1FH ,24H ,01H ,02H ,33H ;加数1

ADD2 DB 56H,49H,4EH,0FH,9CH,22H ,45H ,11H ,45H ,21H ; 加数2

SUM DB 10 DUP (0); 和存储单元

CONT DB 5 ; 循环次数

3.4 某16位二进制数,放在DA TA 连续的两个单元中,试编程求其平方根和余数,将其分

别存放在ANS 和REMAIN 中。

ORG 100h

MOV BL,2; 除数初值

AGAIN: MOV CX,NUM; 预计最大循环次数

MOV AL,BL; 0、1的平方根除外

MUL BL; 得到2的平方

CMP AX,CX; 大于原始数据么?

JG EXIT; 若原始数据小于4转EXIT

MOV AX,CX; 读数

DIV BL; 试除

INC BL; 除数递增

JMP AGAIN; 继续除

EXIT: DEC BL; 去除除数自加

MOV ANS,BL; 存商

MOV AL,BL; 恢复余数

MUL BL;

SUB CX,AX;

MOV REMAIN,CL;

HLT

NUM DW 7;

ANS DB ?;

REMAIN DB ?;

3.5 在DATA1之下顺序存放着以ASCII 码表示的千位数,将其转换成二进制数。

MOV CL,4; 移位次数

MOV CH,CL; 循环次数

MOV SI,OFFSET ASCBIN

CLD

XOR AX,AX

XOR DX,DX

ASCB1: LODSB

AND AL,7FH

CMP AL,'0' ; 不大于„0‟结束转换

JL ERR

CMP AL,'9'

JG ASCB2 ; 大于„9‟转ASCB2

SUB AL,30H ; 数字形式二进制数减30H

JMP ASCB3

ASCB2: CMP AL,'A' ; 大于„9‟又小于„A‟结束转换

JL ERR

CMP AL,'F'

JG ERR ; 大于„F‟为不合理数,结束转换

SUB AL,37H ; 字符形式ASCII 数减37H

ASCB3: OR DL,AL

ROL DX,CL

DEC CH

JNZ ASCB1

ROL DX,CL

MOV BIN,DX ;存储转换结果

ERR: NOP

HLT

ASCBIN DB '1','B,'4','3'

BIN DW ?

3.7 编写程序将MOLT 中的一个8位数乘以20,乘积放在ANS 中(用3种方式)。

解:第一种方法:常规乘法运算

ORG 100h

MOV AL,MOLT

MOV BL,20

MUL BL

MOV ANS,AX

HLT

MOLT DB 2

ANS DW ?

第二种方法,将MOLT 连加20次

ORG 100h

MOV CX,20

MOV BX,MOLT

XOR AX,AX

CLC

ADD1:ADC AX,BX

LOOP ADD1

MOV ANS,AX

HLT

MOLT DW 5

ANS DW ?

第三种方法,将“20”连加MOLT 次

ORG 100h

MOV CX,MOLT

MOV BX,20

XOR AX,AX

CLC

ADD1:ADC AX,BX

LOOP ADD1

MOV ANS,AX

HLT

MOLT DW 5

ANS DW ?

3.8 在DATA 之下存放100个无符号的8位数,找出其最大者并将其存放

在KVFF 单元。

ORG 100h

XOR DL,DL

LEA DI,KVFF;

NEXT0: LEA SI,BUFFER;

MOV CL,99; 比较次数为N-1次 NEXT1: MOV AL,[SI];

INC SI;

CMP DL,AL;

JNC NEXT2;

MOV DL,AL; DL 中始终存目前最大值

NEXT2: DEC CL;

JNZ NEXT1;

MOV [DI],DL; 最大值存储

HLT

BUFFER DB ;自行定义100个数据

KVFF DB ?

3.9 若将数据按大小顺序排序, 试编写程序..

解:此处采用 “冒泡法”予以处理:

ORG 100h

LEA DI,BUFFER; 数据区 MOV BL,99; 外循环次数 NEXT0: MOV SI,DI;

MOV CL,BL; 内循环次数

NEXT3: MOV AL,[SI]; 读数

INC SI; 移动指针

CMP AL,[SI]; 比较

JNC NEXT5; 大于转NEXT5

MOV DL,[SI];

MOV [SI-1],DL;

MOV [SI],AL; 不大于互换 NEXT5: DEC CL; 内循环次数减一

JNZ NEXT3; DEC BL; 外循环次数减一 JNZ NEXT0

HLT

BUFFER DB 自行定义100个字节型数据

3.10 在BVFF 单元中有一个BCD 数A, 试根据下列关系编写程序, 计算结果存在DES 中. A=60,Y=80.

ORG 100h

MOV AL,BVFF

CMP AL,20

JL EX1

CMP AL,60

JL EX2

MOV AL,80

JMP STOP

EX1: MOV BL,3

MUL BL

JMP STOP

EX2: SUB AL,20

STOP: MOV DES,AL

HLT

BVFF DB 8

DES DB ?

3.11址为DATAB 开始的80个单元中, 存放某班80个学生的某课程成绩, 要求:

统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX 开始的5个单元中

求平均成绩,结果存放在LEVEL 中。

解:寄存器使用分配:90分以上在DH ,80分以上在DL ,70分以上在BH ,60分以上在BL ,60分以下在AH ,总分、均分都在[DI]。

ORG 100h

XOR AH,AH

XOR DX,DX ; 统计结果清零

XOR BX,BX ; 统计结果清零

LEA SI,DATA

LEA DI,LEVEL

MOV CL,CONT; 总人数送循环计数器 CX

goon: MOV AL,[SI] ; 读原始数据

ADC [DI], AL; 累加总分

ADC [DI+1],0 ; 计算进位

CMP AL,90

JL PP8 ; 不高于90分者转PP8

INC DH ; 90--100分的人数加一

JMP STOR

PP8: CMP AL,80

JL PP7 ; 不高于80分转PP7

INC DL ;80----89分的人数加一

JMP STOR

PP7: CMP AL,70

JL PP6 ; 不高于70分者转PP6

INC BH ;70---79分的人数加一

JMP STOR

PP6: CMP AL,60

JL PP5 ; 不高于60分者转PP5

INC BL ;60---69分的人数加一

JMP STOR

PP5: INC AH ; 低于60分的人数加一 STOR: INC SI ; 读下一个分数

LOOP GOON

;CX=CX-1,CX不为零转GOON, 继续统计

LEA SI,BUFFER ; 回存统计结果

MOV [SI],DH

INC SI

MOV [SI],DL

INC SI

MOV [SI],BH

INC SI

MOV [SI],BL

INC SI

MOV [SI],AH

MOV AX,WORD PTR [DI] ; 计算平均成绩

MOV CL,CONT

DIV CL

MOV LEVEL,AL ; 回存平均成绩

HLT

CONT DB 10

DATA DB 30,65,99,80,75, 89,100,45,60,70

BUFFER DB ?,?,?,?,?

LEVEL DB ? ,?

3.12 求两个有符号数(DATA1,DATA2)差的绝对值, 结果存入DATA3.

ORG 100h

MOV AL,DATA1;读入被减数

SUB AL,DATA2;减去减数

JC CHANGE ;

JMP STOR

CHANGE: NEG AL

STOR: MOV DA TA3,AL

HLT

DATA1 DB 3

DATA2 DB 5

DATA3 DB ?

3.13 存从40000H 到4BFFH 的个单元均写入55H, 并再逐个读出, 验证是否一致, 若一致, 置AL 为7EH, 否则置AL 为81H.

ORG 100h

MOV AX,4000H;

MOV DS,AX;

MOV SI,0

START: MOV CX,0BFFFH

BEGIN: MOV [SI],55H

MOV AL,[SI]

INC SI

CMP AL,55H

JNZ ERR

LOOP BEGIN

MOV AL,7EH

JMP STOP

ERR: MOV AL,81H

STOP: HLT

3.14~3.15 端口03FBH 的BIT5为状态标志, 当该位为1时, 表示外设忙, 不能接收数据; 当为0时, 表示外设闲, 可以接收数据; 当CPU 向端口03F8H 写入一个字节的数据时,03FBH 的BIT5置1, 当它变为0状态时, 又可以写入下一个数据。据此编写将起始地址为SEDA T 的50个数据输出到03F8H 端口的程序。

W AIT : MOV DX ,03FBH

IN AL ,DX

TEST AL ,0010 0000B;(20H )

JZ SEND

JMP W AIT

SEND : MOV DX ,3F8H

MOV AL ,[SI];

CMP AL ,0AH ;输出字串结束标志符 JZ STOP

OUT DX ,AL

JMP W AIT

STOP :HLT

3.16 口02E0H 的BIT2和BIT5同时为1,表示端口02E7H 有一个字节型数据准备好可以用以输入,当CPU 从该端口读入数据后,02E0端口的BIT2和BIT5就不再同时为1;只有当02E7H 端口的数据再次准备好时,它们才会再次同时为1,据此编写从02E7H 端口输入32个数据然后存入A1000H 单元开始的区域。

MOV AX ,0A000H

MOV DS ,AX

MOV SI ,1000H ; 设置存储区地址 MOV CL ,20H ; 输入数据个数

BEGIN : MOV DX ,0E20H

IN AL ,DX

TEST AL ,0010 0100B; 测试状态位 BIT5、BIT2 JZ BEGIN ; 不同时为1继续测试 MOV DX ,02E7H

IN AL ,DX ; 输入数据

MOV [SI],AL ; 存到指定区域 INC SI ; 移动地址指针 LOOP BEGIN ; 循环

HLT

3.17 在内存40000H 开始的16K 的单元中存放着一组数据,将其顺序搬移到起始地址为A0000H 的区域。

解:利用字符串操作指令 MOVSB ,16K 即16*1024=3FFFH。

MOV AX ,4000H

MOV DS ,AX

MOV AX ,A000H

MOV ES ,AX

MOV SI ,0

MOV DI ,0

MOV CX ,3FFFH

CLD

REP MOVSB

HLT

3.18 上题的基础上,将两个区域的数据逐个进行比较,若有错将BL 置0,全对将BL 置FFH 。

MOV AX ,4000H

MOV DS ,AX

MOV AX ,A000H

MOV ES ,AX

MOV SI ,0

MOV DI ,0

MOV CX ,03FFH

CLD

AAB : CMPSB

JNZ STOP

LOOP AAB

MOV BL ,0FFH

JMP EX1

STOP : MOV BL ,0;

EX1: NOP

HLT

3.19 统计由40000H 单元开始的16K 个单元中所存字符„A‟的个数,统计结果存放在DX 寄存器中。

MOV AX ,4000H

MOV DS ,AX

MOV SI ,0;

MOV CX ,3FFFH ; 数据个数

MOV DX ,0;统计结果寄存器清零 XOR DX,DX CLD

AAB : LODSB

CMP AL ,„A‟; 比较

JZ AAC ;字符为„A‟转计数

LOOP AAB ; 循环

JMP STOP ; 处理完毕转结束

AAC : INC DX ; 统计结果加1

DEC CX ; 循环次数减1

JCXNZ AAB ; CX0继续

STOP : HLT

3.20 编写对AL 中的数据进行“偶校验”的一个过程,并将校验结果放入AL 寄存器。

PJY PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV AL ,DAT

AND AL ,AL

JNP PJY1

MOV AL ,00H ; 表示为偶 JMP EXIT

PJY1: MOV AL ,FFH ; 表示为奇

EXIT : POP DX

POP CX

POP BX

POP AX

RET

PJY NDP

DAT DB ?

3.21 对80000H 开始的256个单元的数据加上偶校验。

ORG 100h

MOV AX ,8000H

MOV DS ,AX

MOV SI,0

MOV CX,100H

CLD

PAR0: LODSB ;(MOV AL ,[SI] ;INC SI )

PAR1:

STOP:

TEST AL,AL JNP PAR1 LOOP PAR0 JMP STOP OR AL,80H; MOV [SI-1],AL DEC CX JNZ PAR0 HLT


相关内容

  • 专业课考试科目
    北京工业大学 421自动控制原理 复试:1.电子技术2.计算机原理 北京航空航天大学 [双控]432控制理论综合或433控制工程综合 [检测]433控制工程综合或436检测技术综合 [系统]431自动控制原理或451材料力学或841概率与数 ...
  • 电气工程及自动化专业考研学校科目
    电气工程及自动化专业考研学校科目 2008年03月21日 星期五 20:29 北京工业大学 421自动控制原理 复试:1.电子技术 2.计算机原理 北京航空航天大学 [双控] 432控制理论综合或433控制工程综合 [检测] 433控制工程 ...
  • 微机原理与应用试卷
    微机原理与应用试卷 一.单项选择题(每小题 1 分共 10 分) 1.十进制33.25转换成十六进制数为( ) ① B1.4H② 1B.19H ③ 21.4H ④ 33.4H 2. 若有16条地址线,那么可访问的内存地址范围为.( ) ① ...
  • 基于825x的几个相关实验包括课程设计
    实验 一 可编程并行接口 一. 实验目的 1. 掌握8255方式0的工作原理及使用方法 二. 实验内容 1. 实验电路如下图,8255C口接逻辑电平开关K0-K7,A口接LED显示电路L0- L7. 2. 编程从8255C口输入数据,再从A ...
  • [测试系统原理与设计](孙传友编著)--习题答案(个人整理)
    <测试系统原理与设计>(孙传友编著)--习题答案(个人整理) (答案仅供参考,部分答案没有,由个人总结整理,若有错误或不当之处请见谅) 第一章 绪论 1. 为什么说仪器技术是信息的源头技术? 仪器是一种信息的工具,起着不可或缺的 ...
  • 微机原理实验步骤学生
    实验要求及步骤 一.遵守"微机原理实验室实验守则",严格执行各个要求. 二.实验前准备的内容:a .完成前次实验报告,b .本次实验的预习报告,c .实验用到的电路图.流程图.程序. 三.实验内容 1.软件实验步骤: D ...
  • 数字式温度计系统设计
    <数字式温度计系统设计> 课程设计 姓名: 许红升 专业: 通信工程 学号: P01214179 性别: 男 邮箱: 466570324@qq.com 联系方式: [1**********] 指导老师: 李斌 张宏伟 一.最终要 ...
  • 科普趣味知识竞赛--计算机部分
    知识竞赛(计算机部分) 简单题 1.多媒体计算机是指( C ) A . 具有多种外部设备的计算机 B . 能与多种媒体设备连接的计算机 C . 能处理多种媒体的计算机 D . 借助多种媒体操作的计算机 2.电子数字计算机工作最重要的特征是( ...
  • 电力信息化与信息安全课后答案
    第一章 1.什么是一次能源?什么是二次能源? 一次能源是指自然界中以天然形式存在并没有经过加工或转换的能量资源 二次能源是指由一次能源经过加工.转换以后得到的能源 2.简述电力系统为什么要组成电网运行? 课本P2,电力系统的形成 3.什么是 ...
  • 智能传感器的应用前景
    智能传感器的应用前景 2012-7-16 (XXXX,XXXX,XXXX) 摘 要:为了解智能传感器的发展现状及其应用前景,通过描述智能传感器的结构.功能.优点以及国内外的应用情况,指出了智能传感器在军用电子系统.家用电器.远程智能监控系统 ...