第4章习题 汇编语言程序设计(单片机第二版)

合集下载

单片机指令系统习题

单片机指令系统习题

单⽚机指令系统习题第四章汇编语⾔程序设计第⼀节汇编语⾔源程序的格式和伪指令(⼀)学习要求1、掌握汇编语⾔源程序格式和伪指令。

2、掌握各种伪指令功能。

(⼆)内容提要⼀:汇编语⾔源程序的格式1、语句格式汇编语⾔源程序是由汇编语句(即指令)组成的。

汇编语⾔⼀般由四部分组成。

其典型的汇编语句格式如下:标号:操作码操作数;注释START:MOV A,30H ;A←(30H)(1) 标号段标号是⽤户定义的符号地址。

(2) 操作码段操作码段是每⼀语句中不可缺少的部分,也是语句的核⼼部分,⽤于指⽰计算机进⾏何种操作,汇编程序就是根据这⼀字段⽣成⽬标代码的。

(3) 操作数段指出了参与操作的数据或存放该数据的地址。

通常有⽬的操作数和源操作数之分。

(4) 注释段为了增强程序的可读性,可在某⾏指令的后⾯⽤分号起头,加上注释,⽤以说明该条指令或该段程序的功能、作⽤,以供编程⼈员参考。

此注释内容程序汇编时CPU 不予处理,不产⽣⽬标代码。

⼆:伪指令1、定位伪指令ORG(Origin)格式:[标号:] ORG mm:16位⼆进制数,代表地址。

功能:指出汇编语⾔程序通过编译,得到的机器语⾔程序的起始地址。

2、定义字节伪指令DB(Define Byte)格式:[标号:] DB X1,X2,~XnXn:单字节⼆进制、⼗进制、⼗六进制数,或以… ?括起来的字符串,数据符号。

功能:定义程序存储器从标号开始的连续单元,⽤来存放常数、字符和表格。

3、定义字伪指令DW(Define Word)格式:[标号:] DW Y1,Y2,~YnYn:双字节⼆进制、⼗进制、⼗六进制数,或以… ?括起来的字符串,数据符号。

功能:同DB,不同的是为16位数据。

4、汇编结束命令END格式:[标号:] END功能:END是汇编语⾔源程序的汇编结束标志,在它后⾯所写的指令均不予处理。

5、等值命令EQU格式:字符名称EQU 数或汇编符号功能:将⼀个数或特定的汇编符号赋予规定的字符名称。

《汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:20XX年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66)第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

第4章 汇编 语言程序设计

第4章  汇编 语言程序设计
14
汇编时,遇到“ 就停止“翻译” 因此, 汇编时,遇到“;” 就停止“翻译”。因此,注释字 段不会产生机器代码。 段不会产生机器代码。 4.1.3 伪指令 在汇编语言源程序中应有向汇编程序发出的指示信息, 在汇编语言源程序中应有向汇编程序发出的指示信息, 向汇编程序发出的指示信息 告诉它如何完成汇编工作,这是通过伪指令来实现。 伪指令来实现 告诉它如何完成汇编工作,这是通过伪指令来实现。 伪指令不属于指令系统中的汇编语言指令,它是程序员 伪指令不属于指令系统中的汇编语言指令, 发给汇编程序的命令,也称为汇编程序控制命令。 发给汇编程序的命令,也称为汇编程序控制命令。 命令 汇编程序控制命令 只有在汇编前的源程序中才有伪指令。 “伪”体现在 只有在汇编前的源程序中才有伪指令。 汇编后,伪指令没有相应的机器代码产生。 汇编后,伪指令没有相应的机器代码产生。 没有相应的机器代码产生 伪指令具有控制汇编程序的输入/输出、 伪指令具有控制汇编程序的输入/输出、定义数据和符 号、条件汇编、分配存储空间等功能。 条件汇编、分配存储空间等功能。
6
经过十几年努力,C51已成为单片机的实用高级编程语言。 经过十几年努力,C51已成为单片机的实用高级编程语言。 已成为单片机的实用高级编程语言 尽管目前已有不少设计人员使用C51来进行程序开发, 尽管目前已有不少设计人员使用C51来进行程序开发,但在 C51来进行程序开发 对程序的空间和时间要求较高的场合,汇编语言仍必不可少 程序的空间和时间要求较高的场合, 空间 要求较高的场合 。 在这种场合下,可使用C语言和汇编语言混合编程。 在这种场合下,可使用C语言和汇编语言混合编程。在很多 需要直接控制硬件且对实时性要求较高的场合,则更是非用 需要直接控制硬件且对实时性要求较高的场合, 汇编语言不可。 汇编语言不可。 掌握汇编语言并能进行程序设计, 掌握汇编语言并能进行程序设计,是学习和掌握单片机程 序设计的基本功之一。 序设计的基本功之一。 基本功之一 4.1.2 汇编语言语句和格式

第四章-汇编语言程序的设计

第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。

(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。

在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。

(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。

汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。

①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。

(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。

)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。

操作数:给指令的操作提供数据或地址。

注释:是对语句或程序段的解释说明。

(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。

冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。

《汇编语言程序设计》习题答案(第二版,沈美明,温冬婵,清华大学出版社)

《汇编语言程序设计》习题答案(第二版,沈美明,温冬婵,清华大学出版社)

1 汇编语言程序设计(第二版)第二章1、 答:直接由指令指定的I/O 端口数为256个。

2、答:3、答:字节单元:(30022H ) = AB H ,(30024H ) = EF H字单元: (30021H ) = AB34 H ,(30022H ) = CDAB H 。

4、答:3017:000A 的存储单元的物理地址是3017AH ,3015:002A 的存储单元的物理地址是3017AH ,3010:007A 的存储单元的物理地址是3017AH 。

5、答:该程序的第一个字的物理地址是0AAA40H 。

6、答:条件标志OF 、SF 、ZF 、CF 的值依次分别为0、0、0、0。

7、答:(1)AX 、BX 、CX 、DX 、AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL 、 SP 、BP 、DI 、SI (注意:学生尽量不要用SP 参与加减运算)(2)CX(3)DX 、AX 、AH 、AL(4)CS 、DS 、ES 、SS(5)FLAGS(6)IP(7)SS 、SP 、BP8、答:可以用来指示存储器地址的寄存器有BX 、SP 、BP 、DI 、SI 、IP 、CS 、DS 、ES 、SS 。

9、答:唯一正确的是D 。

第三章1。

.(1)立即寻址 没有(2)直接寻址 7237H(3)使用BX 的寄存器寻址 没有(4)使用BX 的间接寻址 637DH(5)使用BX 的寄存器相对寻址 0D5F0H(6) 基址变址寻址 8E18H(7)相对基址变址 004FH2 2。

根据下列要求,写出相应的汇编指令。

(1)ADD DX,BX(2) ADD AL,[BX][SI](3) ADD [BX][0B2H], CX(4) MOV AX,2A59H ADD [0524H] ,AX(5) ADD AL ,0B5H3。

(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4现有(DS )=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。

第4章 单片机汇编语言程序设计

第4章  单片机汇编语言程序设计

RO 20HBCMDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
方法1小结:
以上程序用了8条指令,15个内存字节,执行时间为9个 机器周期。
21 0011BCDH H22H0011BCDL
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B00C01D01H0BB0CC0D0DHL
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
例4-7:设30H单元存放的是一元二次方程ax2+bx+c = 0
根的判别式△= b2 – 4ac的值。
试根据30H单元的值,编写程序,
判断方程根的三种情况。
在31H中存放“0”代表无实根,
存放“1”代表有相同的实根,
存放“2”代表两个不同的实根。
解:△为有符号数,有三种情况,这是一多重分支程序
即小于零,等于零、大于零。
R3
R2
回目录 上页 下页
程序:
ORG 1000H CLR C CLR A SUBB A, R0 MOV R2, A CLR A
SUBB A, R1 MOV R3 , A SJMP $ END
;CY 0
;A 0
;低字节求补
;送R2
;A清零 R3 0000
;高字节求补 0000

第4章 MCS-51单片机汇编语言程序设计

第4章 MCS-51单片机汇编语言程序设计
开始
程序清单:
送转移地址序号
A,R3 ;取序号 A ;序号乘2 DPTR, #JTAB ;32个子程序 首地址送DPTR JMP @A+DPTR ;根据序号转移 JTAB: AJMP ROUT00 ;32个子程序首地址 AJMP ROUT01 … MP: MOV RL MOV AJMP ROUT31
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
【例4-1】
双字节二进制数求补。
程序说明:对R3(高8位)、R2(低8位)中的二进制定 点数取反加1即可得到其补码。
开始
程序清单:
BINPL:MOV A,R2 CPL A ADD A,#01H MOV R2,A MOV A,R3 CPL A ADDC A,#00H MOV R3,A RET ;低位字节取反 ;加1 ;低位字节补码送R2 ;高位字节取反 ;加进位 ;高位字节补码送R3
散转生成正确偏移号
置换指令地址表首址
转入R3指示的程序
AJMP
……
AJMP
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
3.循环程序
包括:循环初始化、循环处理、循环控制
开始 置初值 循环体 循环结束? Y 循环修改 N 循环体 循环结束? N Y 结束 循环修改 结束 开始 置初值
;调用查表子程序 ; 暂存R1中 ;调查表子程序 ;平方和存A中 ;等待
取第一个数→A 调查表子程序 结果存入R1 取下一个数→A 调查表子程序 两数平方相加 存结果
子程序清单:
SQR: INC A ;加RET占的一个字节 MOVC A,@A+PC ;查平方表 RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 END

第4章 MCS-51单片机汇编语言程序设计(2)

第4章 MCS-51单片机汇编语言程序设计(2)
START:MOV DPTR,#TAB : MOV A,R7 ADD A,R7 MOV R3,A MOVC A,@A+DPTR
XCH A,R3 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR TAB DW DW A0 A1
…………. DW AN
INC
DPTR
MOVX A,@DPTR SUBB A,R7 JNC XCH BIG1 A,R7
BIG0:INC DPTR
实现程序如下: 实现程序如下
START:CLR C : MOV DPTR,#ST1 , MOVX A,@DPTR , MOV R7,A
MOVX @DPTR,A RET BIG1:MOVX A,@DPTR SJMP BIG0
实现程序如下: 实现程序如下 MOV 30H, 20H ANL 30H,#00011111B MOV A,21H SWAP A RL A ANL A,#11100000B ORL 30H,A
第4章 MCS-51单片机汇编语言程序设计
实现程序如下: 实现程序如下 例 A,@R1 ADDC4.3 做3个字节的 无符号的加法. 无符号的加法.设一个加 MOV R0,#52H , MOV @R0,A 数存放在内部RAM 50H、 RAM的 数存放在内部RAM的50H、 MOV R1,#55H , DEC R0 51H、52H单元中 单元中, 51H、52H单元中,另一 DEC R1 RAM的53H、 MOV A,@R0 个加数存放在RAM 个加数存放在RAM的53H、 MOV A,@R0 54H、55H单元中 单元中, 54H、55H单元中,相加 ADD A,@R1 结果存内部RAM的50H、 结果存内部RAM的50H、 RAM ADDC A,@R1 51H、52H单元 单元, 51H、52H单元,均从高 MOV @R0,A 字节开始存放, 字节开始存放,进位存放 MOV 00H,C 在位寻址区的00H位中。 00H位中 在位寻址区的00H位中。 MOV @R0,A DEC DEC R0 R1

微机原理与单片机接口技术(第2版)李精华 第4章 单片机C51语言程序设计

微机原理与单片机接口技术(第2版)李精华 第4章  单片机C51语言程序设计
位类型bit是C51语言扩充的数据类型,利用它可定义一个位标量,但 不能定义位指针,也不能定义位数组。bit占1位的存储容量,只有0或1两种 取值。位变量必须定义在51系列单片机片内RAM的可位寻址空间中,也就 是字节地址为20H~2FH的16个节单元,每1字节的每1位都可以单独寻址, 共有128位。例如,定义一个位变量flag,若flag的值为0,则将P1口的状态 送入变量temp1中,否则将P1口的状态送入变量temp2中,相关程序段如 下所示。 unsigned char temp1,temp2; bit flag; if(flag= =0)
4.2.3 数据类型
数据类型
类型名称
长位度/
bit sbit sfr sfr16
位类型
1
可寻址位型
1
特殊功能寄存器型
8
16位特殊功能寄存器型
16
取值范围
0,1 0,1 0~255 0~65536
4.2.3 数据类型
1.字符型char
字符型char包括无符号字符型unsigned char和带符号字符型signed
double,float占4字节存储容量,double占8字节存储容 量。浮点型数据可以直接表示小数,因此许多复杂的数 学表达式都采用浮点型数据。51单片机使用浮点型数据 进行运算时消耗资源较大,运行速度也慢,因而在实时 性要求非常高的程序中不做浮点型数据的运算。
4.2.3 数据类型
5.位类型bit
4.2.2 关键字
又称保留字,是程序设计语言中规定的、有固定含义 的单词符号。(32个)
auto break case
Байду номын сангаас
char const continue default do

第4章 汇编语言程序设计

第4章 汇编语言程序设计

例: 三字节无符号数相加,其中被加数在内部RAM 的50H、51H和52H 单元中;加数在内部RAM的53H、 54H和55H单元中;要求把相加之和存放在50H、 51H和52H单元中,进位存放在位寻址区的00H位中。
内部RAM
50H 51H 52H
高字节 低字节
53H 54H 55H
R1→55H
结 束
常用程序结构:
顺序程序、分支程序、循环程序。
4-3
顺序程序
顺序程序又称简单程序,程序走向只有一条路径。 例:双字节求补程序(设数据在R4R5中): 开 始 CLR C MOV A,R5 ;取低字节 处 理 CPL A ADD A,#01H ;低字节变补 处 理 MOV R5,A MOV A, R4 ;取高字节 处 理 CPL A ADDC A,#00H ;高字节变补 结 束 MOV R4,A
片内 RAM 42H 0 十 41H 0 个 40H 十 个
4 -- 4
分支程序(参见书P49-57)
分支程序就是在程序执行过程中要判 断某些条件,当条件成立后程序转移到不 同的功能处运行。在MCS-51单片机中条件 转移指令都可以用在分支程序中。 (复习、参见书P38---39) (1)测试条件符合转移,如: JZ、JNB …等
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和 列表文件(*.LST)。
一、汇编语言指令类型:
1. 机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码。
在源程序中只能有一条END指令

单片机 第四章 80C51单片机汇编语言程序设计

单片机 第四章 80C51单片机汇编语言程序设计

(1)绝对调用指令:ACALL addr11 (2)长调用指令:LCALL addr16
(后续)
4.2.4 子程序设计
3.注意设置堆栈指针和现场保护 4.最后一条指令必须是RET指令 5.子程序可以嵌套,即子程序可以调用子程序
(接上)
6.在子程序调用时,还要注意参数传递的问题
子程序的基本结构
MAIN: ┇ ;MAIN为主程序或调用程序标号 ┇ LCALL SUB ;调用子程序 ┇ SUB:PUSH PSW PUSH ACC ;现场保护 ;
过程B
是 出口 (c) 循环结构
出口 (b) 分支结构
4.2.1
顺序程序结构
是汇编语言程序的最简单也是最基本的程序结 构。程序执行时一条接一条地按顺序执行指令, 无分支、循环以及调用子程序。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A , #30H ADD A , #58H MOV 30H , A SJMP $
二、定时程序 (2)多重循环定时程序(单片机频率为6MHz) 例 MOV R5,#TIME1 LOOP2: MOV R4,#TIME2 ;单周期指令 LOOP1: NOP ;单周期指令 NOP DJNZ R4,LOOP1 ;双周期指令 DJNZ R5,LOOP2 ;双周期指令 RET 公式: 循环体时间=(TIME2*4+2+1)*TIME1*2µs 总时间=循环体时间+4µs
机器编辑->交叉汇编->串行传送
(过程图见教材92页)
单片机的开发过程
设计硬件 软件编程 软件仿真调试 源代码烧入单片机 插入单片机脱机工作 模数电路/单片机硬件 MCS51汇编语言/C
计算机/MEDWIN环境

汇编语言程序设计第二版刘慧婷王庆生主编课后参考答案

汇编语言程序设计第二版刘慧婷王庆生主编课后参考答案

汇编语言程序设计第二版刘慧婷王庆生主编课后参考答案汇编语言程序设计第二版课后参考答案第一章:计算机系统概述1.1 计算机系统的结构和层次安排计算机系统是由硬件和软件两部分组成。

硬件包括中央处理器(CPU)、存储器、输入输出设备等,而软件则包括系统软件和应用软件。

1.2 计算机的工作原理计算机按照指令的顺序执行,并且可以通过I/O设备进行输入输出。

1.3 二进制数的表示和转换二进制数是用0和1表示的数,可以通过不同进位的转换方法将其转换为十进制数、八进制数或十六进制数。

第二章:汇编语言的基本知识2.1 指令系统和指令格式指令系统定义了计算机能够执行的指令的集合,指令格式则规定了指令的编码方式。

2.2 寻址方式和寻址方式标志寻址方式指的是指令操作数的寻址方式,寻址方式标志则用于表示指令中操作数的寻址方式。

2.3 汇编程序的基本格式汇编程序由指令、伪指令和注释组成,其中指令用于描述要执行的操作,伪指令用于进行程序的控制和数据的定义。

2.4 汇编语言程序的编写规则汇编语言程序需要遵守一定的规则,例如标号的定义、指令的书写规范等。

第三章:基本指令的使用3.1 数据传送指令数据传送指令用于将一个数据从源操作数传送至目的操作数。

例如,MOV指令用于将源操作数的内容复制到目的操作数。

3.2 算术运算指令算术运算指令用于进行加法、减法、乘法和除法等数值运算。

例如,ADD指令用于进行两个操作数的相加运算。

3.3 逻辑运算指令逻辑运算指令用于进行与、或、非、异或等逻辑运算。

例如,AND指令用于进行两个操作数的逻辑与运算。

3.4 条件转移指令条件转移指令根据某个条件是否成立来决定是否进行转移。

例如,JMP指令用于根据条件是否满足来进行无条件转移。

3.5 循环指令循环指令用于进行循环操作。

例如,LOOP指令用于实现有限次数的循环操作。

第四章:汇编语言的高级应用4.1 子程序的使用子程序是一段独立的代码块,在需要时可以被调用执行,用于实现重复利用的功能。

IBM-PC汇编语言程序设计(第二版)答案

IBM-PC汇编语言程序设计(第二版)答案

///第一章. 习题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3 将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6)-85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。

科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。

书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。

2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。

电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。

计算机能同时处理二进制信息的位宽定义为计算机的字长。

如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。

4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。

非数值数据如字符、字符串、逻辑值等。

(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。

二进制用B,如10101010B八进制用Q,如437Q。

十进制用D或不用,如54D,或54。

十六进制用H,如27A8H10.完成下列二进制数的加减运算。

(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。

(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。

第4章 单片机汇编语言程序设计

第4章 单片机汇编语言程序设计

功能:从标号指定的地址单元开始,将8位二进制 数据按顺序依次存入形成数据表。数据表可以是 一个或多个字节数据、字符串或表达式,各项数 据用“,”分隔,一个数据项占一个字节单元。
ORG 1000H
TAB:DB -2,-4,100,30H,‘A’, ‘C’
用单引号括起来的字符存其ASCII码,负数存其 补码。
第4章 单片机汇编语言程序设计
4.1.2 伪指令
1.设置起始地址伪指令 ORG 格式: [标号:] ORG nn 该指令总是出现在每段源程序或数据块的开始。
汇编时,nn确定了后面第一条指令或数据的地 址,此后的源程序或数据块就依次连续存放在 以后的地址内,直到遇到另一个ORG指令为止。 如:
第4章 单片机汇编语言程序设计
第4章 单片机汇编语言程序设计
第4章 单片机汇编语言程序设计
4.1 汇编语言程序设计的基础知识 4.2 汇编程序设计方法 4.3 综合编程举例
第4章 单片机汇编语言程序设计
4.1 汇编语言程序设计的基础知识
4.1.1 汇编语言的语句格式
MCS-51单片机汇编语言的语句格式表示如下: [标号:] <操作码> [操作数] [;注释]
MOV A, R4 MOV R0, A M1: RET
第4章 单片机汇编语言程序设计
多分支程序,还可根据运算结果或输入数据将程 序转入不同的分支。
在多分支程序中,因为可能的分支会有 N个,若 采用多条 CJNE 指令逐次比较,程序的执行效率 会降低很多,特别是分支较多时更加明显。
一般采用跳转表的方法,通过两次转移来实现多 分支结构。
第4章 单片机汇编语言程序设计
ORG 2500H BR2: MOV R0, #00H MOV A, R1 ACALL COMP ;R0 清零 ;第一个数(R1)送A ; 比较(R1)与(R0)大小

单片机原理及应用第二版课后习题答案

单片机原理及应用第二版课后习题答案

单片机原理及应用(第二版)(参考答案)第1章单片机概述参考答案1.1 答:微控制器,嵌入式控制器1.2 答:CPU、存储器、I/O口、总线1.3 答:C1.4 答:B1.5 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。

而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。

嵌入式处理器一般意义上讲,是指嵌入系统的单片机、DSP、嵌入式微处理器。

目前多把嵌入式处理器多指嵌入式微处理器,例如ARM7、ARM9等。

嵌入式微处理器相当于通用计算机中的CPU。

与单片机相比,单片机本身(或稍加扩展)就是一个小的计算机系统,可独立运行,具有完整的功能。

而嵌入式微处理器仅仅相当于单片机中的中央处理器。

为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。

1.6 答:MCS-51系列单片机的基本型芯片分别:8031、8051和8071。

它们的差别是在片内程序存储器上。

8031无片内程序存储器、8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。

1.7 答:因为MCS-51系列单片机中的“MCS”是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机。

1.8 答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。

1.9 单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,实现各种方式的检测和控制。

单片机在嵌入式处理器市场占有率最高,最大特点是价格低,体积小。

DSP是一种非常擅长于高速实现各种数字信号处理运算(如数字滤波、FFT、频谱分析等)的嵌入式处理器。

第4章-汇编语言程序设计教案

第4章-汇编语言程序设计教案

第四章教学实施计划3课堂教学实施计划第 8 课教学过程设计:复习 0 分钟;授新课 100 分钟讨论 0 分钟;其它 0 分钟授课类型(请打√):理论课√讨论课□实验课□习题课□其它□教学方式(请打√):讲授√讨论□示教□指导□其它□教学手段(请打√):多媒体√模型□实物□挂图□音像□其它□4.1 汇编语言程序设计概述程序实际上是一系列计算机指令的有序集合。

我们把利用计算机的指令系统来合理地编写出解决某个问题的程序的过程,称为程序设计。

程序设计是单片机应用系统设计的重要组成部分,单片机的全部动作都是在程序的控制下进行的。

随着芯片技术的发展,很多标准的或功能型的硬件电路都集成到了芯片中,所以,软件设计在单片机应用系统开发中占的比重越来越大。

一、汇编语言和高级语言汇编语言:用助记符表示的指令称为汇编语言,用汇编语言编写的程序称为汇编语言源程序汇编语言也是面向机器的,它仍是一种低级语言。

汇编语言离不开具体计算机的硬件,与硬件紧密相关。

高级语言:高级语言不受具体“硬件”的限制,具有通用性强,直观、易懂、易学,可读性好等优点。

多数的51单片机用户使用C语言来进行程序设计。

C语言已经成为人们公认的高级语言中高效、简洁而又贴近51单片机硬件的编程语言。

二、汇编语言的特点•助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。

•使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。

•汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。

•汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。

三、汇编语言的语句格式•指令语句:每一条指令语句在汇编时都产生一个指令代码(也称机器代码),执行该指令代码对应着机器的一种操作。

汇编语言程序设计教程2版4章

汇编语言程序设计教程2版4章
例如控制汇编以实现数据定义、存储器分配、 符号处理、模块之间的通信、源程序开始和 指示程序结束等功能。
伪指令无相应的目标代码,因此也称为伪操 作。伪指令格式与指令格式十分相似。
2019/7/10
13
2019/7/
伪指令语句
表达式赋值伪指令 数据定义伪指令 LABEL伪指令 段定义伪指令 过程定义伪指令 模块命名、程序开始和程序结束伪指令 模块通信伪指令 结构伪指令STRUC
•汇编时遇到宏指令即展开。
2019/7/10
3
汇编语言程序
汇编语言的基本思想是用一组字母、数字 和符号来代替一条二进制码表示的指令, 即用指令的助记符、符号地址、标号、伪 指令等符号书写程序。
用这种汇编语言书写的程序称为汇编语言 源程序。把汇编语言源程序翻译成在机器 上能执行的机器语言程序(目标代码程序) 的系统程序称为汇编语言。
2019/7/10
10
分界符
分界符作为一个程序中或者一条指令中两 个部分的分隔符号用。如在汇编语句的注 释部分之前要加一个“;”,再比如在 MOV AX,BX这条指令中,两个操作数 之间要加一个“,”,这里的“;”和 “,”都是分界符。
8086/8088汇编语言的分界符如下: ; , : [ ] + = ( ) $& ? · /
用户还可以用编辑程序来修改源程序中的错误,最后得到无语法错 误的目标文件。
目标文件虽然已经是二进制文件,但它还不能直接上机运行,必须 经过连接程序(LINK)把目标文件与库文件或其他目标文件连接 在一起形成可执行文件(EXE文件),才可以在机器上运行。
2019/7/10
5
汇编语言源程序的编辑
1) 段—变量(DS)或标号(CS)的段起 始地址;

汇编语言程序设计(第二版)第4章

汇编语言程序设计(第二版)第4章

【指令格式】JNZ 标号
【功能】如果ZF标志位的值是0,则转到标号所在处 继续执行,否则按正常顺序执行下一条指令。
第4章 分支与循环程序设计
3.JC指令(Jump if CF Set)
【指令格式】JC 标号 【功能】如果CF标志位的值是1,则转到标号所在处继续执 行,否则按正常顺序执行下一条指令。 4.JNC指令(Jump if CF Not Set) 【指令格式】JNC 标号 【功能】如果CF标志位的值是0,则转到标号所在处继续执 行,否则按正常顺序执行下一条指令。 5.JS指令(Jump if SF Set) 【指令格式】JS 标号 【功能】如果SF标志位的值是1,则转到标号所在处继续执 行,否则按正常顺序执行下一条指令。
(3)CMP指令对各标志位的设定规则也与SUB指令相同。
第4章 分支与循环程序设计
4.2 跳转类指令
4.2.1 无条件跳转指令──JMP
【指令格式】JMP 标号
【功能】让计算机转到标号所在处继续执行。 通常情况下,标号的定义与JMP指令应该在同一个段中, 这种情况下的跳转称为段内跳转,只需要改变IP的值即可实 现转移。标号定义的位置与JMP指令的位置之间没有先后限 制,JMP指令既可以实现向前跳转,也可以用于向后跳转。 程序中还可以多处使用JMP指令转到同一个标号。如果标号 的定义与JMP指令不在同一个段中,跳转就需要同时修改 CS和IP才能实现,这种跳转称为段间跳转。
第4章 分支与循环程序设计
4.1.6 CMP指令
【指令格式】CMP d1, d2 【功能】用操作数d1减去操作数d2,把运算的情况反映到 条件标志位上,运算得到的差并不送到任何一个操作数中, 即CMP指令并不改变两个操作数的值。
【说明】
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章习题与参考答案
4.1程序设计语言有哪三种?各有什么异同?汇编语言有哪两类语言?各有什么特点?
4.2在汇编语言程序设计中,为什么要采用标号来表示地址?标号的构成原则是什么?使用标号有什么限制?注释段起什么作用?
4.3MCS-51汇编语言有哪几条常用伪指令?各起什么作用?
4.4汇编语言程序设计分哪几步?各步骤的任务是什么?
4.5汇编语言源程序的机器汇编过程是什么?第二次汇编的任务是什么?
4.6请用除法指令编写例4.2的程序,并计算所占内存字节数和所需机器周期数。

4.7设内部RAM20H单元有两个非零的BCD数,请编写求两个BCD数的积并把积送入21H单元的程序。

4.8已知,从内部RAM BLOCK单元开始存放有一组带符号数,数的个数存放在LED单元。

请编写
可以统计其中正数和负数个数并分别存入NUM和NUM+1单元的程序。

4.9设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元。

请编写满足如下关系的程序:
X>=50时:Y=X;
50>X>=20时:Y=5X;
X<20时:Y=2X;
4.10在例4.6的128分支程序中,若用LJMP指令代替AJMP指令,以便分支程序可以放在64KB地址范围的任务位置。

请修改原程序,修改后的程序最多可实现多少个分支?
4.11从外部RAM的SOUCE(二进制8位)开始有一数据块,该数据块以$字符结尾。

请编写程序,
把它们传送到以内部RAM的DIST为起始地址的区域($字符也要传送)。

4.12在例4.11中,若SOUCE为二进制16位,则程序又该如何编。

4.13在外部RAM的低256地址单元区,有起始地址为SOUCE且长度存放在LEN单元的数据块。

请编写能对它们进行奇偶校验的程序。

凡满足奇校验(奇数个1)的数据均送到内部RAM起始地址为DIST 的存储区。

4.14在例4.13中,若SOUCE的地址不在外部RAM的滴56地址区,则程序该如何编写。

4.15外部RAM从2000H到2100H有一数据块,请编写将它们传送到从3000H到3100H区域的程序。

4.16设有一起始地址为FIRST+1的数据块,存放在内部RAM单元,数据块长度存放在FIRST单元而且不为0,要求统计该数据块中正偶数和负奇数的个数,并将它们分别存放在PAPE单元和NAOE单元。

试画出能实现上述要求的程序流程图并编写相应程序。

4.17请编写能从以内部RAM的BLOCK为起始地址的100个无符号数中找出最小值并把它送入MIN 单元的程序。

4.18已知,在内部RAM中,共有6组无符号4字节被加数和加数分别存放在以FIRST和SUCOND 为起始地址的区域(低字节在前,高字节在后)。

请编程序和(设和也为4字节),并把和存于以SUM开始的区域。

4.19在内部RAM中,有一个以BLOCK为起始地址的数据块,块长存放在LEN单元。

请用查表指令编写程序,先检查它们是否十六进制数中的A~F,若是十六进制数中的A~F,则把它们变为ASCII码;若不是,则把它们变为00H。

4.20设在片内RAM的20H单元中有一数,其值范围为0~100,要求利用查表法求此数的平方值并把结果存入片外RAM的20H和21H单元(20H单元中为低字节),试编写相应程序。

4.21在内部RAM中,从BLOCK开始的存储区有10个单字节十进制数(每字节有2个BCD数),请编程序求BCD数之和(和为3位BCD数),并把它们存于SUM和SUM+1单元(低字节在SUM单元)。

4.22在例4.21中,若改为10个双字节十进制数求和(和为4位BCD数),结果仍存于从SUM开始的连续单元(低字节先存)。

请修改相应程序。

4.23已知MDA和MDB内分别存有两个小于10的整数,请用查表子程序实现c=a2+2ab+b2,并把和存于MDC和MDC+1单元(MDC中放低字节)。

4.24已知外部RAM起始地址为STR的数据块中有一以回车符CR断尾的十六进制ASCII码。

请编写程序,将它们变为二进制代码,放在起始地址为BDATA的内部RAM存储区中。

4.25设晶振频率为6MHZ,试编写能延时20ms的子程序。

4.26已知内部RAM的MA(被减数)和MB(减数)中分别有两个带符号数。

请编写减法子程序,并把差存入RESULT和RESULT+1(低8位在RESULT单元)中。

4.27设R0内为一补码形式的带符号被除数,R1内为补码形式的带符号除数,请通过编程完成除法,并把商置于R2内且余数置于R3内。

4.28设8031单片机外部RAM从1000H单元开始存放有100个无符号8位二进制数。

要求编写子程序,能把它们从大到小依次存入片内从10H开始的RAM存储区,请画程序流程图。

解:
ORG0030H
MOV R0,#10H
MOV R2,100
MOV DPTR,#1000H
MOV A,#00H
LOOP:MOVX A,@DPTR
MOV@R0,A
INC A
INC DPTR
DJNZ R2,LOOP
LOOP1:MOV R0,#10H;置数据块指针R0
MOV R2,#100;块长送R2
CLR F0;交换标志F0清零
DEC R2;块长-1为比较次数
LOOP2:MOV08H,@R0;第一个数送08H
INC R0
MOV A,@R0;第二个数送A
MOV09H,A;第二个数送A
CJNE A,08H,LOOP3;(11H)和(10H)作比较
LOOP3:JC LOOP4;若(09H)<(08H),则BUNEXT MOV@R0,08H;若(09H)>=(08H),则两者交换
DEC R0
MOV@R0,09H
INC R0;恢复地址块指针
SETB7FH;交换标志位置1
LOOP4:DJNZ R2,LOOP2;若一次冒泡未完成,则BULOOP JB F0,LOOP1;交换标志位1,则BUBBLE
SJMP$;结束
END。

相关文档
最新文档