版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章89C51汇编语言程序设计汇编语言是面向机器硬件的语言,要求程序设计者对89C51单片机具有很好的“软、硬结合”的功底。4.1汇编语言程序设计概述4.1.1机器语言、汇编语言和高级语言1.机器语言用二进制(“0”、“1”)代码表示的指令、数字,用机器语言编写的程序机器语言目标程序,不易懂,难记忆,易出错。,P.53,2汇编语言采用英文的指令助记符表示指令称为符号语言或汇编语言将汇编语言程序转换成为二进制代码表示的机器语言程序的程序称为汇编程序经汇编程序“汇编”得到的机器语言程序称为机器语言目标程序,原来的程序称为汇编语言源程序。汇编语言特点:面向机器的语言,程序设计员须对硬件有相当深入的
2、了解。助记符指令和机器指令一一对应,用汇编语言编写的程序(比高级语言编写的程序)效率高,占存储空间小,运行速度快,能编写出最优化的程序。能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。汇编语言和机器语言都脱离不开具体机器的硬件,均是面向“机器”的语言,缺乏通用性。,P.53,3高级语言不受具体机器的限制,接近于人的自然语言及学科语言,常用的如BASIC、FORTRAN以及C语言等。可视化、面向对象高级语言优点:通用性强,直观、易懂、易学,可读性好。计算机不能直接识别和执行高级语言,需要将其“翻译”成机器语言才能识别和执行,进行“翻译”的专用程序称为编译程
3、序。可用C语言(C51)来进行AT89C51的应用程序设计。对于程序的空间和时间要求很高的场合,汇编语言仍是必不可缺的。C语言和汇编语言混合编程在很多需要直接控制硬件的场合,则更是非用汇编语言不可使用汇编语言编程,是单片机程序设计的基本功之一,P.53,汇编,汇编语言源程序,机器语言目标程序,汇编程序(汇编软件),人工,人工汇编,机器汇编,编译/解释,高级语言源程序,机器语言目标程序,编译程序/解释程序(软件),(编译型/解释型),4.1.2汇编语言语句的种类和格式两种基本类型:指令语句和伪指令语句(1)指令语句(CPU指令、可执行指令、真指令)已在第3章介绍每一条指令语句在汇编时都产生一个指
4、令代码:机器指令代码(2)伪指令语句(命令语句)是为汇编工作服务的。在汇编时除了定义的数据之外没有机器指令代码与之对应。,P.54,【例4-1】AT89C51的汇编语言的四分段格式如下:标号字段操作码字段操作数字段注释字段START:MOVA,#00H;0AMOVR1,#10;10R1MOVR2,#00000011B;3R2LOOP:ADDA,R2;(A)+(R2)ADJNZR1,LOOP;R1内容减1不为零,则循环NOPHERE:SJMPHERE程序功能:R2内容自加10次:R210A,P.54,十进制,二进制,十六进制,P.55,4.1.3伪指令伪指令也称为汇编程序控制命令,是向汇编程序发
5、出的指示信息,告诉它如何完成汇编工作。伪指令没有相应的机器指令代码产生常用的伪指令:1.ORG(ORiGin)汇编起始地址命令指定后续程序的起始地址。可多次使用ORG指令,但是,地址必须由小到大排列,地址不能交叉、重叠。ORG2000H20007400START:MOVA,#00H2.END(ENDofassembly)汇编终止命令汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条END命令,且位于整个程序的最后。,P.55-56,3DB(DefineByte)定义字节命令例:ORG2000H20003040184342DB30H,40H,24,“C”,“B”DB功能
6、是从当前地址开始定义(存储)若干个单字节数据,十进制数自然转换成16进制数,字母按ASCII码存储。4DW(DefineWord)定义数据字命令定义16位的数据字。例如:ORG2000H20001246007B000ADW1246H,7BH,10DB功能是从当前地址开始定义(存储)若干个双字节数据,高字节在低地址单元5EQU(EQUate)赋值命令用于给标号赋值。赋值以后,其标号值在整个程序有效。例如:TESTEQU2000H表示标号TEST=2000H,在汇编时,凡是遇到标号TEST时,均以2000H来代替。,P.56,【例4-3】设计一子程序,功能为:根据30H单元中的数x(09之间)查平
7、方表,求出x相应的平方y存50H单元。x和y均为单字节数。用DPTR作基址的方法:地址机器码汇编语言源程序ORG0300H0300E530PFSUB:MOVA,30H;取自变量x0302900309MOVDPTR,#0309H;或MOVDPTR,#TAB030593MOVCA,A+DPTR;查表得相应函数值0306F550MOV50H,A;存结果y030822RET03090001040910TAB:DB00H,01H,04H,09H,10H;平方表014916030E1924314051DB19H,24H,31H,40H,51H;2536496481,(x+0309H),【引用前例】,4.2
8、汇编语言源程序的汇编汇编语言源程序“翻译”成机器代码(指令代码)的过程称为“汇编”。汇编可分为手工汇编和机器汇编两类:4.2.1手工汇编人工查表翻译指令。但遇到的相对转移指令的偏移量的计算,要根据转移的目标地址计算偏移量,不但麻烦,且容易出错。4.2.2机器汇编用编辑软件进行源程序的编辑。编辑完成后,生成一个ASCII码文件,扩展名为“.ASM”。然后在微计算机上运行汇编程序,把汇编语言源程序翻译成机器代码。交叉汇编-汇编后的机器代码是在另一台(种)计算机(这里是单片机)上运行。反汇编分析已有的可执行目标程序,要将二进制的机器代码语言程序反向翻译成汇编语言源程序,以便分析、修改。,P.57,4
9、.3AT89C51单片机汇编语言程序设计举例4.3.6分支转移程序设计1单分支转移结构:仅有两个出口,两者选一,图4-4,图4-5,P.65,属循环结构!,3,图4-3,程序段1,条件满足?,【例B4-1】请编程序使48H、49H单元所存储的二个数中较大者在前。ORG0000HBIG:MOVA,48H;取甲CLRC;清CySUBBA,49H;减去乙数JNCLP1;无借位则甲乙,转LP1MOVA,48H;乙数大:两数交换MOV48,49HMOV49H,ALP1:SJMP$;自循环【练习】请编程序使48H、49H单元所存储的二个数中较小者送28H单元。请编程序判断若34H、35H单元所存储的二个数
10、相等则置F0位为0,否则置1。,CJNEA,49H,LPSJMPLP1;相等LP:JNCLP1;甲乙,2多分支转移结构:程序的判别部分有两个以上的出口。,例4-10求符号函数的值。X存放在40H单元,Y存放在41H单元。SIGNFUC:MOVA,40HCJNEA,#00H,NZEARAJMPNEGT;为0则转NZEAR:JBAcc.7,POSI;为负则转MOVA,#01H;为正:赋+1原码AJMPSAVEPOSI:MOVA,#81H;赋-1的原码SJMPSAVENEGT:MOVA,#00H;赋0的原码SAVE:MOV41H,A;存结果SJMP$END,图4-6,P.66,NZEAR,NEGT,
11、POSI,AY,A,A,(A),XA,S,S,若补码:-1是FFH,教材题意为用原码表示带符号数X、Y,SAVE,图4-7,在实际的应用中,经常遇到的图4-7结构形式的分支转移程序的设计,需根据某一单元的内容是0,1,n,来分别转向处理程序0,处理程序1,处理程序n。,P.65,类似于开关语句,A=1,A=n,4.3.7循环程序设计图4-8是计数循环控制结构,图4-9是条件控制结构。,图4-8,图4-9,循环计数,P.67,公共,结果处理,循环,循环准备:初始地址指针循环计数初值单元变量初值,为下一次循环做准备,例4-12(改)如果xi均为单字节数,并按i顺序存放在51单片机内部RAM从50H
12、开始的单元中,数据个数n放在R2中,求这批数据的和(双字节)放在R3、R4中,程序如下:(求数组和程序)ORG0000HADD1:MOVR2,#0AH;加法次数n送R2,n为具体的数据个数,如10MOVR3,#0;部分和高字节单元清0MOVR4,#0;部分和低字节单元清0MOVR0,#50H;R0指向第一个数LOOP:MOVA,R4;取部分和低字节原有的值ADDA,R0;加上当前数低字节(本例原始数据只有低字节)MOVR4,A;回存新的部分和低字节结果MOVA,R3;取部分和高字节原有的值ADDCA,#00H;加上当前数高字节(00H)及低字节的进位MOVR3,A;回存新的部分和高字节结果INCR0;R0指向下一个数DJNZR2,LOOP;未加完,转回继续进行下一个数的累加SJMP$END,P.68,作业三:P.704补充1:请编程序使40H、41H单元所存储的二个数中的大数减去小数,差值存58H单元(即求两数差的绝对值)。补充2:有8个双字节BC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 报关员资格考试典型试题及答案
- 活动1 包书皮教学设计小学劳动粤教版劳动与技术三年级-粤教版(劳动与技术)
- 人教版七年级下册第四单元第二章第一节《食物中的营养物质》教学设计
- 民情信息采集技师试题及答案
- 土壤肥料考试题库及答案解析
- 2026年宅基地纠纷调处试题(附答案)
- 安全与教育相关试题及答案
- 2026年岩土取样与试验规范试题(附答案)
- 指向思维发展的小学中段深度阅读教学备课教案
- 2026年污水处理工艺运行参数控制培训考核试卷(含答案)
- 2025至2030中国美容仪行业现状及未来发展前景预测报告
- 关于某某企业级固态硬盘采购与质保合同
- 2026年河北省机关事业单位技术工人图书仓储员考试选择题
- 2025年陶瓷地砖行业技术专利分析报告
- 风行股海课件
- 树立消防员正确的消费观
- 装置艺术设计课件
- 矿山闭坑施工方案
- 地铁车辆排查巡检方法
- 证券投资基金第六版刘大赵课后答案
- 消化早癌课件
评论
0/150
提交评论