预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章汇编语言程序设计知识4.1汇编语言程序的汇编4.2汇编语言程序设计概述4.2.1伪指令格式:〔标号:〕DB<字节数据>功能:从指定的地址单元开始,存入规定好的8位数(字节数据)说明:1)存贮地址单元可由前一条指令确定或由ORG命令指定;2)当存贮多个数时,中间用“,”隔开。例如:ORG8000HMOVA,40HTAB:DB40H,1101B,96……表示从8002H单元开始分别存放40H,0DH,43H例:ORG1000HDB“Howareyou”则把字符串中的字符按ASCII码连续存放在1000H~100AH11个单元中(包括两个空格)。注意:DB0FA2H是非法的,因0FA2H不是字节数。格式:〔标号:〕DW<字数据>功能:从指定的地址开始,存入字十六位数据(字数据)。说明:存入数据时高位在前,低位在后,即高8位存入低地址单元,低8位存入高地址单元。例:ORG1000HDW765AH,40H,“AB”则1000H~1005H单元依次存放着:76H,5AH,00H,40H,41H,42H。注意:1)DW语句中,40H是8位数,按16位数0040H存放.2)DW“ABC”及DW“Howareyou”是非法的,而DB“ABC”“Howareyou”则是合法的。格式:〔标号:〕DS<数或表达式>功能:从指令的地址单元开始,保留指定数目的字节单元作为备用空间。例:ORG1000HDS20START:MOVA,#00H则汇编后,从1000H开始,保留20个单元作它用,第三条指令的标号START的地址应为1014H。注意:MCS-51系列单片机,DB、DW、DS伪指令只能用于程序存贮器,不能对数据存贮器使用。格式:<字符名称>EQU<数或表达式>功能:将右边的值赋给左边用户定义的字符。说明:1)赋值后的字符即可做为地址使用,也可以做为立即数使用;2)一经使用EQU赋值,整个程序有效;3)所赋值可是8位(字节)或16位(字);4)该伪指令一般放在程序的开始段;5)指令字符名称构成的规定和地址标号一样,但不是标号,使用时后无“:”。例如程序段:ORG8000HAAEQU10H;AA=10HABCEQUAA+10H;ABC=20HMOVA,ABC;A←20HBS:ADDA,#AA;A←(A)+10H说明:程序中,AA、ABC是字符名称,BS是标号。格式:<字符名称>BIT<位地址>功能:把位地址赋给指定的字符名称。例:A1BITP1.0A2BIT20H说明:赋值命令和位定义命令仅为方便编程和阅读理解程序使用,使用时,字符名称或位名称一般取有意义且便于记忆的字母数字。4.2.2汇编语言程序设计一般步骤4.2.3循环结构程序设计1.设置循环计数器实现已知循环次数的循环控制2.使用测试条件转移指令控制未知次数的循环编辑ppt程序如下:ORG1000HMOVR2,#STA-1;设地址指针MOVB,#0FFH;设计数器LOOP:INCR2;修改地址指针,准备下一次循环INCB;修改计数器MOVA,@R2;取数CJNEA,“$”,LOOP;判断循环是否结束MOVLEN,B;存数据END说明:1)解法一为先判断后处理形式,更符合人们的习惯思维,但使用了无条件转移指令,程序结构不清晰,质量不高。2)解法二为先处理后判断形式,我们要熟悉并掌握这种方法,同时注意解法二中对地址指针R2和计数器B的初值设置。4.2.4子程序设计3.现场保护子程序执行时首先必须将两段程序都用到的寄存器或存贮单元保存起来,称现场保护。在子程序返回前,再将保存起来的内容恢复到原处,返回后继续执行程序,这个过程称恢复现场。对于PC值的现场保护和恢复是由计算机在执行LCALL,ACALL和RET时自动完成的。对于其它需要保护的存贮单元,由程序员在子程序的开头和结尾编程实现,一般也是用栈操作指令完成的。4.主程序与子程序的参数传递主程序在调用子程序时必须将具体的数据传递给子程序中相应的变量(寄存器等),这些数据称入口参数。子程序执行结束后也必须将运行结果传递给主程序供主程序使用,这些结果数据称出口参数。〔例4-12〕设内部存放长度为40H的ASCII字符串,首址为40H。试将该字符中每一个字符中加偶校验位。要求先编写ASCII字符的偶校验子程序,通过子程序调用完成所给任务。〔解〕该例中,入口参数仅有一个ASCII数,出口数据也只有一个加校验位的ASCII字符,可只用累加器A传送。子程序编写如下:ORG0120HSUB:ADDA,#00H;根据A中字符的1的个数;产生PSW的奇偶标志位PJNBP,DONE;判A中1个数是否为偶数ORLA,#80H;为奇,置标志位1DONE:RET主程序如下:ORG0100HMAIN:MOVR0,#40HMOVR7,#40H;置循环计数器NEXT:MOVA,