1-1 请写出下列各十进制数在八位微型机中的原码、反码和补码形式:
(1)X=十48 (2)X=+123 (3)X=-34 (4)X=-115
真值 X
原码
反码
补码
+48
30H
30H
30H
+123
7BH
7BH
7BH
-34
10100010B=0A2H
0DDH
0DEH
-115
11110011B=0F3H
8CH
8DH
1-2 将下列数看作八位微型机中带符号数的原码、反码和补码时,写出相应的真值:
(1)10110110B (2)01000101B (3)11110010B (4)10101101B
原码
10110110B
01000101B
11110010B
10101101B
真值 X
-36H=-54
+45H=+69
-72H=-114
-2DH=-45
反码
10110110B
01000101B
11110010B
10101101B
真值 X
-49H=-73
+45H=+69
-0DH=-13
-52H=-82
补码
10110110B
01000101B
11110010B
10101101B
真值 X
-4AH=-74
+45H=+69
-0EH=-14
-53H=-83
1-3 写出下列各数的BCD码:
(1)47 ---47H 0100 0111B (2)78 --78H 0111 1000B
(3)1996 --1996H 0001 1001 1001 0110B (4)115 --115H 0001 0001 0101B
1-4 用十六进制形式写出下列字符的ASCll码:
字符串
无校验ASCll码
奇校验ASCll码
偶校验ASCll码
(1)ESC
1BH
9BH
1BH
(2)STUDENT
53H 54H 55H 44H 45H 4EH 54H
0D3H 54H 0D5H 0C4H
45H 0CEH 54H
53H 0D4H 55H 44H 0C5H 4EH 0D4H
(3)X1AB96
58H 31H 41H 42H 39H 36H
58H 31H 0C1H 0C2H 0B9H 0B6H
0D8H 0B1H 41H 42H 39H 36H
(4)COMPUTER
43H 4FH 4DH 50H 55H 54H 45H 52H
43H 4FH 0CDH 0D0H 0D5H 54H 45H 52H
0C3H 0CFH 4DH 50H 55H 0D4H 0C5H 0D2H
1-5 将下列数据进行加法和减法运算,写在前面的数为被加数或被减数(写出竖式)。
(1)97H和OFH (2)0A6H和33H (3)0F3H和0F4H (4)0B6H和0EDH
一、加法
(1)97H和OFH
被加数 1 0 0 1 0 1 1 1 B =97H
加数 0 0 0 0 1 1 1 1 B =0FH
+
和 1 0 1 0 0 1 1 0 B =A6H
C8=0 ,C7=0 0V =0 ,CY =0
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
:
无符号数: CY=0, 97H+0FH=0A6H=166 ∵151+15=166
带符号数: OV=0, 97H+0FH=0A6H 真值=-5AH=-90 ∵-69H+15=-105+15=-90
(2)0A6H和33H
被加数 1 0 1 0 0 1 1 0 B =A6H
加数 0 0 1 1 0 0 1 1 B =33H
+
和 1 1 0 1 1 0 0 1 B =F9H
C8=0 ,C7=0 0V =0 ,CY =0
分析:
无符号数: CY=0, A6H+33H=0D9H=217 ∵166+51=217
带符号数: OV=0, A6H+33H=0D9H 真值=-27H=-39 ∵-5AH+51=-90+51=-39
(3)0F3H和0F4H
被加数 1 1 1 1 0 0 1 1 B =F3H
加数 1 1 1 1 0 1 0 0 B =F4H
+
和 1 1 1 1 0 0 1 1 1 B =E7H
C8=1 ,C7=1 0V =0 ,CY =1
分析:
无符号数: CY=1, F3H+F4H=100H+0E7H=1E7H=487 ∵243+244=487
带符号数: OV=0, F3H+F4H=0E7H 真值=-19H=-25 ∵-13+(-12)= -25
(4)0B6H和0EDH
被加数 1 0 1 1 0 1 1 0 B =B6H
加数 1 1 1 0 1 1 0 1 B =EDH
+
和 1 1 0 1 0 0 0 1 1 B =A3H
C8=1,C7=1 0V =0 ,CY =1
分析:
无符号数: CY=1,B6H+EDH=100H+0A3H=1A3H ∵182+237=419
带符号数: OV=0, B6H+EDH=0A3H 真值=-5DH=-93 ∵-4AH-13H=-74-19=-93
二、减法:
(1)97H和OFH
被减数 10010111B
- 减数 00001111B
求补
11110000B 取反
+ 1 加1
+ 11110001B
进 位 111110111
差 10001000B
分析:
无:CY=/C8=/1=0,∵97H-0FH=88H, 151-15=136
带:C8=1,C7=1 OV=0, ∵97H-0FH=88H, 真值=-78H=-120 ∴ -105-15=-120
(2)0A6H和33H
被减数 10100110B
- 减数 00110011B
求补
11001100B 取反
+ 1 加1
+ 11001101B
差 101100011B
分析:
无:CY=/C8=/1=0,∵0A6H-33H=73H, 166-51=115
带:C8=1,C7=0,OV=1, ∵0A6H-33H=63H, OVER ∴ -90-51=-141<-128
(3)0F3H和0F4H
被减数 11110011B
- 减数 11110100B
求补
00001011B 取反
+ 1 加1
+ 00001100B
差 11111111B
分析:
无:CY=/C8=/0=1,∵0F3H-0F4H=-100H+0FFH=-1
带:C8=0,C7=0,OV=0, ∵0F3H-0F4H=0FFH, 真值=-(00H-0FFH)=-1
(4)0B6H和0EDH
被减数 10110110B
- 减数 11101101B
求补
00010010B 取反
+ 1 加1
+ 00010011B
差 11001001B
分析:
无:CY=/C8=/0=1,∵0B6H-0EDH=-100H+0C9H=-37H=-55
带:C8=0,C7=0,OV=0, ∵0B6H-0EDH=0C9H, 真值=-(00H-0C9H)=-37H=-55
1-6 完成下列数据的乘除运算,写在前面的数为被乘数或被除数(写出竖式)。
(1)1100B和1101B
被乘数
1
1
0
0
B
乘数
×
1
1
0
1
B
1
1
0
0
0
0
0
0
1
1
0
0
+
1
1
0
0
乘积
1
0
0
1
1
1
0
0
B
(2)ll0ll0llB和10010101B
被乘数
1
1
0
1
1
0
1
1
B
乘数
×
1
0
0
1
0
1
0
1
B
1
1
0
1
1
0
1
1
0
0
0
0
0
0
0
0
1
1
0
1
1
0
1
1
0
0
0
0
0
0
0
0
1
1
0
1
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
+
1
1
0
1
1
0
1
1
乘积
1
1
1
1
1
1
1
0
1
1
1
0
1
1
1
B
(1)1100B和1101B
0
.1
0
1
1101
1
1
0
0
1
1
0
1
0
1
1
0
0
1
1
0
0
0
(2)ll0ll0llB和10010101B
1
.0
1
1
1
1
10010101
1
1
0
1
1
0
1
1
1
0
0
1
0
1
0
1
1
0
0
0
1
1
0
0
0
1
0
0
1
0
1
0
1
1
0
0
0
0
0
1
1
0
1
0
0
1
0
1
0
1
1
1
1
0
0
0
1
0
1
0
0
1
0
1
0
1
1
0
0
1
1
0
1
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1-7 将下列数据分别进行逻辑乘、逻辑加和逻辑异或运算(写出竖式)。
(1)33H和0BBH
0 0 1 1 0 0 1 1 B =33H
1 0 1 1 1 0 1 1 B =BBH
∧
0 0 1 1 0 0 1 1 B =33H
0 0 1 1 0 0 1 1 B =33H
1 0 1 1 1 0 1 1 B =BBH
∨
1 0 1 1 1 0 1 1 B =BBH
0 0 1 1 0 0 1 1 B =33H
1 0 1 1 1 0 1 1 B =BBH
∨
1 0 0 0 1 0 0 0 B =88H
(2)0ABH和7FH
1 0 1 0 1 0 1 1 B =ABH
0 1 1 1 1 1 1 1 B =7FH
∧
0 0 1 0 1 0 1 1 B =2BH
1 0 1 0 1 0 1 1 B =ABH
0 1 1 1 1 1 1 1 B =7FH
∨
1 1 1 1 1 1 1 1 B =FFH
1 0 1 0 1 0 1 1 B =ABH
0 1 1 1 1 1 1 1 B =7FH
∨
1 1 0 1 0 1 0 0 B =D4H
(3)0CDH和80H
1 1 0 0 1 1 0 1 B =CDH
1 0 0 0 0 0 0 0 B =80H
∧
1 0 0 0 0 0 0 0 B =80H
1 1 0 0 1 1 0 1 B =CDH
1 0 0 0 0 0 0 0 B =80H
∨
1 1 0 0 1 1 0 1 B =CDH
1 1 0 0 1 1 0 1 B =CDH
∨ 1 0 0 0 0 0 0 0 B =80H 0 1 0 0 1 1 0 1 B =4DH
(4)78H和OFH
0 1 1 1 1 0 0 0 B =78H
0 0 0 0 1 1 1 1 B =0FH
∧
0 0 0 0 1 0 0 0 B =08H
0 1 1 1 1 0 0 0 B =78H
0 0 0 0 1 1 1 1 B =0FH
∨
0 1 1 1 1 1 1 1 B =7FH
0 1 1 1 1 0 0 0 B =78H
0 0 0 0 1 1 1 1 B =0FH
∨
0 1 1 1 0 1 1 1 B =77H
1-8 把下列各数按补码运算规则求出X+Y的补码及其真值:
(1)X=十48 Y=十38
被加数 0 0 1 1 0 0 0 0 B [X]补=30H
加数 0 0 1 0 0 1 1 0 B [Y]补=26H
+
和 0 1 0 1 0 1 1 0 B =56H
C8=0,C7=0 0V =0
∵[X]补+[Y]补=[X+Y]补=56 H 真值=+56H=+86
(2)X=+123 Y=—49
被加数 0 1 1 1 1 0 1 1 B [X]补=7DH
加数 1 1 0 0 1 1 1 1 B [Y]补=CFH
+
和 1 0 1 0 0 1 0 1 0 B =4AH
C8=1,C7=1,0V=0
∵[X]补+[Y]补=[X+Y]补=4A H 真值=+4AH=+74
(3)X=-34 Y=+87
被加数 1 1 0 1 1 1 1 0 B [X]补=DEH
加数 0 1 0 1 0 1 1 1 B [Y]补=57H
+
和 1 0 0 1 1 0 1 0 1 B =35H
C8=1,C7=1 0V =0
∵[X]补+[Y]补=[X+Y]补=35 H 真值=+35H=+53
(4)X=-115 Y=-15
被加数 1 0 0 0 1 1 0 1 B [X]补=8DH
加数 1 1 1 1 0 0 0 1 B [Y]补=F1H
+
和 1 0 1 1 1 1 1 1 0 B =7EH
C8=1,C7=0 0V =1
∵[X]补+[Y]补=7EH≠[X+Y]补 负溢出
第二章
习题答案
工程经济学课后答案小学生必背古诗文7综合教程3课后答案高中数学必修2答案高等数学同济课后答案
2-2 8051单片机内部包含哪些主要逻辑部件?各自的功能是什么?
答:8051单片机内部包含:
1、 中央处理器CPU:它是单片机内部的核心部件,决定了单片机的主要功能特性,由运算器和控制器两大部分组成。
2、 存储器:8051单片机在系统结构上采用了哈佛型,将程序和数据分别存放在两个存储器内,一个称为程序存储器,另一个为数据存储器。在物理结构上分程序存储器和数据存储器,有四个物理上相互独立的存储空间,即片内ROM和片外ROM,片内RAM和片外RAM。
3、 定时器/计数器(T/C):8051单片机内有两个16位的定时器/计数器,每个T/C既可以设置成计数方式,也可以设置成定时方式,并以其定时计数结果对计算机进行控制。
4、 并行I/O口:8051有四个8位并行I/O接口(P0~P3),以实现数据的并行输入输出。
5、 串行口:8051单片机有一个全双工的串行口,可实现单片机和单片机或其他设备间的串行通信。
6、 中断控制系统:8051共有5个中断源,非为高级和低级两个级别。它可以接收外部中断申请、定时器/计数器申请和串行口申请,常用于实时控制、故障自动处理、计算机与外设间传送数据及人机对话等。
2-3 8051单片机的存储器分哪几个空间?通过什么信号来区别不同空间的寻址?
答:有四个物理上相互独立的存储空间:片内ROM地址为0000H-0FFFH此时/EA=1;片外ROM地址为0000H-0FFFFH此时/EA=0。片内数据存储器地址为00H-0FFH;片外数据存储器地址为0000H-0FFFFH;区分片内片外数据存储器通过指令MOV与MOVX。
2-6 内部RAM低128单元划分为哪三个主要部分?各部分主要功能是什么?
答:分为三部分:工作寄存器去,位寻址区,用户RAM区(堆栈、数据缓冲)。
工作寄存器区(00H-1FH):32个RAM单元共分四组,每组8个寄存单元(R0-R7)。寄存器常用于存放操作数及中间结果等。位寻址区(20H-2FH):此部分16个单元的每一位都有一个8位表示的位地址,位寻址取得每一个单元既可作为一般RAM单元使用,进行字节操作,也可以对单元中的每一位进行位操作。用户RAM区:也是数据缓冲区,一般用于存放用户数据及作堆栈区使用。
第三章习题答案
3-1 MCS-51的寻址方式及特点
MCS-51的寻址方式有七种:
1.直接寻址:指令中直接给出操作数所在的单元地址或位地址 P68
2.立即寻址:在指令中紧跟在操作码之后的字节是操作数 P69
3.寄存器寻址:操作数在指令中给出的寄存器内 P69
4.寄存器间接寻址:指令中指定的寄存器内存的是操作数的地址 P70
5.变址寻址:指令中给出由基址加变址形成的16位地址作为操作数的地址 P71
6.相对寻址:指令中给出相对偏移量,该相对偏移量与PC当前值求和得到转移地址 P72
7.位寻址:指令中给出的位地址或位寄存器里存是所寻的位操作数 P71
3-2 MCS-51的指令按功能分类及各类的作用
MCS-51的指令按功能分5类:
1.数据传送指令:主要用于数据的传送与交换和栈操作。 P74
2.算术运算指令:主要用来作算术四则运算、增量、减量及二—十进制调整。 P81
3.逻辑运算指令:主要用来作“与”、“或”、“异或”、“清除” “求反”及“左右移位”等逻辑运算。 P88
4.位操作指令:主要用来作 “与”、“或”、 “清除”、“置位” “求反”等布尔操作及“位传送” 操作。 P90
5.控制转移指令:主要用于改变程序计数器PC的值, 以控制程序执行的走向,有转移、调用及返回操作.P91
3-3 变址寻址和相对寻址中偏移量的异同点
变址寻址 :@A+DPTR ;基址:DPTR, 变址:A
@A+PC ;基址:PC当前值, 变址:A
变址:A 中为8位二进制无符号数偏移量(A)∈[0,255] 即[00H,0FFH]
相对寻址:
相对偏移量为8位二进制带符号数的补码
rel ∈[-128,+127]
[rel]补码∈[00H,0FFH]
相同点:偏移量∈[00H,0FFH]
不同点:变址寻址 中偏移量为8位二进制无符号数; 相对寻址中偏移量为8位二进制带符号数的补码
3-4 指出下面每条指令的寻址方式:
MOV A,#30H –寄存器、立即–30H 立即数
MOV C,30H –寄存器、位 –30H 位地址
MOVX A,@DPTR –寄存器、间接
jC LAB1 –相对
MOV 30H,@R1 –直接、间接 –30H 字节地址
MOV 30H,R5 –直接、寄存器 –30H 字节地址
MOVC A,@A+PC –寄存器、变址
sjmp LAB2 –相对
3-5 运行下列程序后各单元及A、PSW的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
(1)
1.
MOV A,#2 ;(A)=02 H 0000 0001(psw)
MOV R1,#30H ;(R1)=30H 0000 0001
MOV @R1,A ;((R1))=(30H)=02 H 0000 0001
MOV 35H,R1 ;(35H)=30H 0000 0001
XCH A,R1 ;(A)=30H, (R1)= 02 H 0000 0000
2.
MOV A,#0F5H ;(A)=0F5H 00000000
MOV 30H,#9BH ;(30H)=9BH
MOV R0,#30H ;(R0)=30H
ADD A,#28H ;(A)=1D H 10000000
ADDC A, @R0 ;(A)=0B9H 01000001
3.
CLR C ;(CY)=0
MOV 40H,#7AH ;(40H)=7AH
MOV A,#92H ;(A)=92H 00000001
MOV R0,#40H ;(R0)=40H
SUBB A,@R0 ;(A)=92H-7AH-0=18H,(PSW)=44H
4.
MOV A,#79H ;(A)=79H 00000001
MOV 30H,#89H ;(30H)=89H
ADD A,30H ;(A)=02H 11000001
DA A ;(A)=68H 10000001
SWAP A ;(A)=86H 10000001
3-6 写出能完成下列数据传送的指令
⑴ R1内容传送到R0
MOV A,R1; MOV R0,A
(2)内部RAM25H单元内容送到 35H单元
MOV 35H,25H或MOV A,25H ; MOV 35H,A ;MOV 35H,25H
(3)内部RAM25H单元内容送到 P1口
① MOV A,25H ; MOV P1,A ;
② MOV P1,25H ;
③ MOV 90H,25H
(4)内部RAM40H单元内容送外部RAM 2005H单元
MOV A,40H;MOV DPTR,#2005H;MOVX @DPTR,A
(5)外部RAM3000H单元内容送内部RAM 25H单元
MOV DPTR,#3000H; MOVX A,@DPTR;MOV 25H,A
(6)外部ROM1000H单元内容送内部RAM 35H单元
MOV DPTR,#1000H; CLR A ;MOVC A,@A+DPTR;MOV 35H,A
(7)外部ROM4000H单元内容送外部RAM4000H单元
MOV DPTR,#4000H; CLR A;MOVC A,@A+DPTR;MOVX @DPTR,A
(8)外部RAM 1000H单元内容送SP堆栈指针
MOV DPTR,#1000H;MOVX A,@DPTR; MOV SP,A
3-7 BCD码减法,求7954H-4157H=3797H。
算法1:
999AH-4157H=5843H
5843H+7954H并调整
ORG 0000H
BCDS: MOV A,#9AH
CLR C
SUBB A,#57H
MOV 30H,A
MOV A,#99H
SUBB A,#41H
MOV 31H,A
MOV A,#54H
ADD A,30H
DA A
MOV 20H,A
MOV A,#79H
ADDC A,31H
DA A
MOV 21H,A
CPL C
MOV 2FH,C
SJMP $
END
循环程序
ORG 0000H
BCDS1: MOV 20H,#54H
MOV 21H,#79H
MOV 30H,#57H
MOV 31H,#41H
MOV R0,#30H
CLR C
MOV A,#9AH
SUBB A,@R0
MOV 40H,A
INC R0
MOV A,#99H
SUBB A,@R0
MOV 41H,A
CLR C
MOV R0,#40H
MOV R1,#20H
MOV R2,#2
LOOP: MOV A,@ R0
ADDC A,@R1
DA A
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP
CPL C
MOV 7FH,C
SJMP $
END
3-7 顺序程序 算法2
ORG 0000H
BCDS1: MOV 20H,#54H
MOV 21H,#79H
MOV 30H,#57H
MOV 31H,#41H
MOV R0,#30H
CLR C
MOV A,#9AH
SUBB A,@R0 ;
ADD A,20H ;
DA A ; CY)=0
MOV 40H,A
CPL C ; ( CY)=1
INC R0
MOV A,#9AH
SUBB A,@R0 ;(CY)=0
ADD A,21H
DA A
MOV 41H,A
CPL C
MOV 7FH,C
SJMP $
END
3-8写出下段程序中每一步A、B中的结果
MOV A,#22H ;(A)=22H
MOV B,#05H ; (B)=05H
MOV R0,#08H
MUL AB ; (A)=0AAH,(B)=0 00000000
MOV B,R0
DIV AB ;(A)=15H,(B)=02H 00000001
3-9 试写出完成如下操作的程序
(1) ORG 0000H
MOV DPTR,#1000H
MOVX A,@DPTR
ANL A,#11110000B
MOVX @DPTR,A
SJMP $
(2) ORL 50H,#00001111B
(3) XRL 50H,#11100000B
(4) MOV 50H,#11110000B
(5) XRL 50H,#0FFH
3-10 30H开始的20个单元数据传送到外部3000H
ORG 0000H
MOV R0,#30H
MOV DPTR,#3000H
MOV R7,#20
Loop1: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,Loop1
SJMP $
END
3-11 根据R3条件转移 1
ORG 0000H
Cjne R3,#15,NEQ
sjmp L1 ;=15
NEQ: jnC L1 ;>15
sjmp $ ;<15
L1: nop ;≥15
.
ORG 0000H
Cjne R3,#15,NEQ
sjmp Halt
NEQ: jC L1 ;<15
sjmp Halt
L1: nop ;<15
Halt: sjmp $ ; ≥15
ORG 0000H
Cjne R3,#15,NEQ
sjmp L1
NEQ: jC L1
sjmp $
L1: nop ;≤15
ORG 0000H
Cjne R3,#15,NEQ
sjmp Halt
NEQ: jnC L1
sjmp Halt
L1: nop ;>15
Halt: sjmp $
3-11 根据R3条件转移 2
ORG 0000H
CLR C
MOV A,R3
SUBB A,#15
JNC GE15 ;≥15
….
(R3)-15
ORG 0100H
CLR C
MOV A,R3
SUBB A,#15
JC GE15 ;<15
….
(R3)-15
ORG 0000H
CLR C
MOV A,#15
SUBB A,R3
JNC GE15 ;≤15
….
15-(R3)
ORG 0000H
CLR C
MOV A,#15
SUBB A,R3
JC GE15 ;>15
….
15-(R3)
3-12 已知(SP)=53H,(PC)=37FEH 执行: ACALL 3A00H 后:
(SP)=(SP)+2=55H
(PC)=3A00H
((SP-1))=(54H)=00H ;PCL
((SP))=(55H)=38H ;PCH
37FEH: ACALL 3A00H
3800H:
第四章汇编语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
思
考题
安全员b证考试题库金融学机考题库消防安全技术实务思考题答案朝花夕拾考题答案excel基本考题
与习题4及答案
4-13 试编程实现将20H单元的两位BCD数相乘,结果以BCD码的形式存于21H单元当中。
4-13-1 ORG 0000H
MOV 20H,#56H
MOV A,20H
ANL A,#0FH
MOV B,A
MOV A,20H
ANL A,#0F0H
SWAP A
MOV R2,A
DEC B
LOOP: ADD A,R2
DA A
DJNZ B,LOOP
MOV 21H,A
SJMP $
END
4-13-2
ORG 0000H
MOV 20H,#56H
MOV A,20H
MOV R0,#21H
MOV 21H,#0
XCHD A,@R0
MOV B,@R0
SWAP A
MOV R2,A
DEC B
LOOP: ADD A,R2
DA A
DJNZ B,LOOP
MOV 21H,A
SJMP $
END
4-7 设一个加数在50H~52H单元中,另一个加数在53H~55H中,进位存放在位地址00中,试编程实现两数求和。
ORG 000H
ONE DATA 50H
TWO DATA 53H
WEI BIT 00H
MOV R0,#ONE
MOV R1,#TWO
; MOV C,WEI
CLR C
MOV R2,#3
LOOP: MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP
MOV WEI,C
SJMP $
END
4-7-2
ORG 0000H
ONE DATA 50H
TWO DATA 53H
WEI BIT 00H
MOV R0,#ONE
MOV R1,#TWO
CLR C
MOV R2,#3
SETB RS0
MOV R0,#58H
CLR RS0
LOOP: MOV A,@R0
ADDC A,@R1
INC R0
INC R1
SETB RS0
MOV @R0,A
INC R0
CLR RS0
DJNZ R2,LOOP
MOV WEI,C
SJMP $
END
4-11试用除法指令将20H单元的两位BCD码变成ASCII码后存入21H和22H单元。
ORG 0000H
MOV 20H,#67H
MOV A,20H
MOV B,#10H
DIV AB
ADD A,#30H
MOV 21H,A
ORL B,#30H
MOV 22H,B
SJMP $
END
4-1从20H单元开始存放一组带符号数,其数目已存在1FH单元。要求统计出大于0、小于0和等于0的个数并存于ONE、TWO、THREE 三个单元。
ORG 0000H
ONE EQU 30H
TWO EQU 31H
THREE EQU 32H
NUM EQU 1FH
MOV NUM,#0FH
MOV R0,#20H;-1,2,34,0A0H,0....
MOV R1,#ONE
LOOP: MOV @R1,#0
INC R1
CJNE R1,#34H,LOOP
LOOP1: MOV A,@R0
JZ MTHREE
JB ACC.7,MTWO
INC ONE
SJMP DJNZZ
MTHREE: INC THREE
SJMP DJNZZ
MTWO: INC TWO
DJNZZ: INC R0
DJNZ NUM,LOOP1;NUM=0FH
SJMP $
END
4-5在用JMP指令实现128分支的程序中,试用LJMP代替AJMP指令。修改后的程序有何特点?最多能实现多少分支?
4-5
AJMP指令表 128分支占128*2=256 字节MEMORY
LJMP指令表 可以实现256/3=85 个分支
特点:各分支可在64KB存储器中转移。
4-2设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元,请编出满足如下关系的程序:
X X≥50
Y= 5X 50>X≥20
2X X<20
ORG 0000H
VAX EQU 30H
FUNC EQU 31H
MOV VAX,#55;15;20;25;50;55
MOV A,VAX
CJNE A,#20,DO1
DO1: JNC DO2
MOV B,#2
MUL AB
SJMP MEM
DO2: CJNE A,#50,DO3
DO3: JNC MEM
MOV B,#5
MUL AB
MEM: MOV FUNC,A
SJMP $
END
X
Y
X
Y
15
2X=30=14H
50
X=50=32H
20
5X=100=64H
55
X=55=37H
25
5X=125=7DH
4-3外部RAM从2000H到2100H有一数据块,请编出将它们传送到外部RAM3000H到3100H区域的程序。
4-7 ORG 0000H
MOV DPTR,#2000H
MOV P2,#30H
MOV R0,#00H
MOV R2,#0
LOOP:MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP ;0—FF--0
MOVX A,@DPTR ;(DPTR)=2100H
INC P2 ;31H
MOVX @R0,A
SJMP $
END
4-4在内部RAM中,有一个以BLOCK为始址的数据块,块长在LEN单元。请用查表指令编一程序,先检查它们若是16进制中的A~F,则把它们变为ASCⅡ码;若不是,则把它们变为00H。
4-4
BLOCK EQU 31H
LEN EQU 30H
N EQU 30
ORG 0000H
MOV R0,#BLOCK
MOV LEN,#N
MOV R2,LEN
LOOP: MOV A,@R0
CJNE A,#0AH,DO1
DO1: JNC DO2
SJMP DO5
DO2: CJNE A,#0FH,DO3
SJMP DO4
DO3: JC DO4
DO5: MOV A,#0
SJMP NEXT
DO4: MOV DPTR,#TAB
CLR C
SUBB A,#0AH
MOVC A,@A+DPTR
NEXT: MOV @R0,A
INC R0
DJNZ R2,LOOP
SJMP $
TAB: DB 'A','B','C','D','E','F'
END
4-6试编写一个子程序将字符串:“MCS-51 Microcntrol”装入外部RAM 8000H开始的显示缓冲区。
4-9ORG 0000H
MOV DPTR,#TAB
MOV P2,#80H
MOV R0,#00H
MOV R2,#19
LOOP: MOV A,#0
MOVC A,@A+DPTR
MOVX @R0,A
INC R0
INC DPTR
DJNZ R2,LOOP
SJMP $
tab: DB 'MCS-51 Microcontrol'
END
4-10将内部RAM的AAA单元中8位无符号二进制数转换成用BCD码表示的十进制数。(要求用连续除10的方法实现)
4-10
ORG 0000H ORG 1000H
AAA DATA 0FFH AAA EQU 0FFH
MOV A,#AAA MOV A,#AAA
MOV B,#0AH MOV R0,#30H
DIV AB MOV B,#0AH
MOV 30H,B DIV AB
MOV B,#0AH MOV @R0,B
DIV AB INC R0
MOV 31H,B JNZ