《第四章 MCS-51汇编语言程序设计-精品文档资料.ppt》由会员分享,可在线阅读,更多相关《第四章 MCS-51汇编语言程序设计-精品文档资料.ppt(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4 MCS-514 MCS-51汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言程序设计概述汇编语言程序设计概述汇编语言程序:汇编语言程序:用汇编语言编写的、完成特定功能的指令序列。用汇编语言编写的、完成特定功能的指令序列。汇编程序:汇编程序:能能将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程程序序的的系系统统软软件。件。汇编:汇编:汇编语言程序到机器语言程序的转换过程称为汇编。汇编语言程序到机器语言程序的转换过程称为汇编。汇编方式:汇编方式:1.1.手工汇编:人工查指令表汇编。用于设计短小程手工汇编:人工查指令表汇编。用于设计短小程序或调试程序的场合。序或调试
2、程序的场合。早期行为。早期行为。2.2.机器汇编:用汇编程序进行汇编。机器汇编:用汇编程序进行汇编。PCPC机普及后。机普及后。4 MCS-514 MCS-51汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言程序设计概述汇编语言程序设计概述汇编的主要任务:汇编的主要任务:1 1)确定程序中每条汇编语言指令的指令机器码。)确定程序中每条汇编语言指令的指令机器码。2 2)确定每条指令在存储器中的存放地址。)确定每条指令在存储器中的存放地址。3 3)提供错误信息。)提供错误信息。4 4)提提供供目目标标执执行行文文件件(*.OBJ/*.HEX).OBJ/*.HEX)和和列列表表文文件件(*.
3、LST.LST)。)。汇编语言的语句格式:汇编语言的语句格式::;4 MCS-514 MCS-51汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言程序设计概述汇编语言程序设计概述汇编语言的语句格式:汇编语言的语句格式::;标号标号:以字母开头的:以字母开头的1-8个字符(字母、数字等)和个字符(字母、数字等)和“:”组成。不能使用本汇编语言已定义的符号。组成。不能使用本汇编语言已定义的符号。1BT:BEGINTA+TB:ADD:操作码操作码:语句执行的操作内容,不能空缺。:语句执行的操作内容,不能空缺。操作数操作数:为指令的操作提供数据或地址;可缺省,也可:为指令的操作提供数据或地址;
4、可缺省,也可包括二项、三项;各操作数之间以逗号分隔。包括二项、三项;各操作数之间以逗号分隔。注释注释:以:以“;”开头,如换行还应加开头,如换行还应加“;”。BEGIN:BT1:TATB:ADD1:4 MCS-514 MCS-51汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言程序设计概述汇编语言程序设计概述4.4 4.4 MCS-51汇编语言的伪指令汇编语言的伪指令源程序使用机器汇编要考虑汇编程序的约定源程序使用机器汇编要考虑汇编程序的约定1 1)按指令格式和语法规则编写程序。按指令格式和语法规则编写程序。常数的表示:常数的表示:十进制数:十进制数:2020十六进制数:十六进制数:8
5、7H87H,0F0H0F0H二进制数:二进制数:01011001B01011001B字符:字符:HH字符串:字符串:“HelloHello”。2 2)使用使用伪指令伪指令提供汇编信息。提供汇编信息。伪指令是汇编程序的命令,有作用,无相对应的机器码。伪指令是汇编程序的命令,有作用,无相对应的机器码。汇编语言指令类型汇编语言指令类型4 MCS-514 MCS-51汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言程序设计概述汇编语言程序设计概述4.4 4.4 MCS-51汇编语言的伪指令汇编语言的伪指令1 1.机器指令机器指令:指令系统中的全部指令,每条指令有对应的机器代码。指令系统中的全部
6、指令,每条指令有对应的机器代码。2 2.伪指令伪指令:汇编控制指令,仅提供汇编信息,没有指令代码。汇编控制指令,仅提供汇编信息,没有指令代码。3 3.宏指令宏指令:宏汇编功能:将需要多次反复执行的程序段定义成一个宏宏汇编功能:将需要多次反复执行的程序段定义成一个宏 指令名(宏定义),编程时,可在程序中使指令名(宏定义),编程时,可在程序中使 用宏指令名来替代一段程序(宏调用)。用宏指令名来替代一段程序(宏调用)。4.4 4.4 MCS-51汇编语言的伪指令汇编语言的伪指令汇编语言伪指令汇编语言伪指令起始地址指令:指明程序和数据块起始地址。起始地址指令:指明程序和数据块起始地址。1.ORG指令地
7、址指令地址 机器码机器码源程序源程序ORGORG 2000H 2000H 2000H 78 30 2000H 78 30MAINMAIN:MOV R0MOV R0,#30H#30H 2002H E6 2002H E6MOV AMOV A,R0R0 ORG 3000HORG 3000H 3000H 23 3000H 23DB 23HDB 23H,100100,A A 3001H 64 3001H 64 3002H 41 3002H 414.4 4.4 MCS-51汇编语言的伪指令汇编语言的伪指令汇编语言伪指令汇编语言伪指令1.ORG2.END结束汇编指令。结束汇编指令。(1)整个源程序只有一条)
8、整个源程序只有一条“END”指令。指令。(2)如)如“END”指令在中间,其后的源程序汇编指令在中间,其后的源程序汇编程序将不予处理。程序将不予处理。3.EQU 等值。为标号或标识符赋值。等值。为标号或标识符赋值。X1 EQU 2000HX2 EQU 0FH MAIN:MOV DPTR,#X1ADD A,#X24.4 4.4 MCS-51汇编语言的伪指令汇编语言的伪指令汇编语言伪指令汇编语言伪指令1.ORG2.END3.EQU4.DB定义字节型常数指令。定义字节型常数指令。例:例:DB 12HDB 12H,100100,A A5.DW定义字型常数指令。定义字型常数指令。4.4 4.4 MCS-
9、51汇编语言的伪指令汇编语言的伪指令汇编语言伪指令汇编语言伪指令1.ORG2.END3.EQU4.DB5.DW6.DS 定义存储区命令。定义存储区命令。DS 例:例:ADDRTABL:DS20ORG 8100HDS 08H7.BIT 位定义命令。位定义命令。BIT 例:例:AQ BIT P1.0;保留;保留2020个地址单元个地址单元;从;从8100H8100H开始保留开始保留8 8个地址单元个地址单元;将;将P1.0P1.0位地址赋予位地址赋予AQAQ压缩式压缩式BCDBCD码分解成为单字节码分解成为单字节BCDBCD码码片内RAM42H0 十41H0 个40H 十十 个个nMOVMOV R
10、0 R0,#40H#40H;设指针设指针nMOVMOV A A,R0R0;取一个字节取一个字节nMOVMOV R2 R2,A A;暂存暂存nANLANL A A,#0FH#0FH;清清0 0高半字节高半字节nINCINC R0 R0nMOVMOV R0 R0,A A ;保存数据个位保存数据个位nMOVMOV A A,R2R2nSWAP ASWAP A ;十位换到低半字节十位换到低半字节nANLANL A A,#0FH#0FHnINCINC R0 R0nMOVMOV R0 R0,A A;保存数据十位保存数据十位求求R2R2中补码绝对值,正数不变,负数变补中补码绝对值,正数不变,负数变补。MOV
11、A MOV A,R2R2 JNBJNB ACC.7 ACC.7,NEXT NEXT;判断,判断,转移转移 D DEC AEC A ;减一减一 CPLCPL A A ;取反取反 MOV R2MOV R2,A ANEXTNEXT:SJMP NEXT SJMP NEXT ;结束结束 为一串为一串7 7位位ASCIIASCII码数据的码数据的D D7 7位加上奇校验,位加上奇校验,设数据存放在片外设数据存放在片外RAMRAM的的21012101H H起始单元,数据长起始单元,数据长度在度在21002100H H单元。单元。MOV DPTRMOV DPTR,#2100H#2100HMOVX AMOVX
12、A,DPTR DPTR ;取数据长度;取数据长度MOV R2MOV R2,A A ;循环次数;循环次数NEXTNEXT:INC DPTRINC DPTRMOVX AMOVX A,DPTR DPTR ;开始取数;开始取数ORL AORL A,#80H#80H ;高位置;高位置1 1,同,同 ;时影响奇偶位;时影响奇偶位JNB PJNB P,PASS PASS ;奇偶位为奇偶位为0 0不保存不保存MOVX DPTRMOVX DPTR,A A ;保存新数;保存新数PASSPASS:DJNZ R2DJNZ R2,NEXT NEXT ;判断是否循环;判断是否循环DONEDONE:SJMP DONE SJMP DONE ;结束;结束