李伯成《微型计算机原理与接口技术》课后习
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
答案
李伯成《微机原理》习题 第三章
本章作业参考
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
目:
1.周明德: 微型计算机IBM-PC系统原理与应用 清华大学出版社 1991
2.王永山等: 微型计算机原理与应用 西安电子科大出版社 1998
3.张怀莲: IBMPC汇编语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
电子工业出版社 1990
注:本习题解中的程序仅为代码片段,可在Emu8086 version 2.57环境下仿真运行,如果在MASM下进行汇编,需添加段设置以及相应的伪指令。
3.1
MOV AX,00H; 立即寻址
SUB AX,AX; 寄存器寻址
[BX]; 寄存器间接寻址 MOV AX,
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位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其
分别存放在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码
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示的千位数,将其转换成二进制数。
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种方式)。
解:第一种
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
:常规乘法运算
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;
次
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; 比较次数为N-1中始终存目数据区 外循环次内循环次数
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<20,Y=3*A; A<60,Y=A-20; 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 DATA3,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状态时,又可以写入下一个数据。据此编写将起始地址为SEDAT的50个数据输出到03F8H端口的程序。
WAIT: MOV DX,03FBH
IN AL,DX
TEST AL,0010 0000B;(20H)
JZ SEND
JMP WAIT
SEND:MOV DX,3F8H
MOV AL,[SI];
CMP AL,0AH;输出字串结束标志符 JZ
STOP
OUT DX,AL
JMP WAIT
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; CX<>0继续 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 ENDP
DAT DB ,
3.21 对80000H开始的256个单元的数据加上偶校验。
ORG 100h
MOV AX,8000H MOV DS,AX
MOV SI,0
MOV CX,100H CLD
PAR0: LODSB
TEST AL,AL
JNP PAR1
LOOP PAR0 JMP STOP
PAR1: OR AL,80H;
MOV [SI-1],AL DEC CX JNZ PAR0 STOP: HLT
;(MOV AL,[SI] ;INC SI)