ImageVerifierCode 换一换
格式:PPT , 页数:36 ,大小:4.20MB ,
文档编号:6085347      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-6085347.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(ziliao2023)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(汇编语言程序设计-课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

汇编语言程序设计-课件.ppt

1、汇编语言程序设计汇编语言程序设计2学习内容学习内容3 汇编语言程序:汇编语言程序:用汇编语言编写的、用汇编语言编写的、完成特定功能的指令序列。完成特定功能的指令序列。汇编程序:汇编程序:能将汇编语言能将汇编语言源程序源程序转换成机器语言转换成机器语言目标目标程序的系统软件。程序的系统软件。汇编语言程序到机器语言程序的转换过程称为汇编。汇编语言程序到机器语言程序的转换过程称为汇编。1.手工汇编手工汇编:人工查指令表汇编。用于设计短小程序或调试程:人工查指令表汇编。用于设计短小程序或调试程序的场合。序的场合。2.机器汇编机器汇编:用汇编程序进行汇编。交叉编译的概念;:用汇编程序进行汇编。交叉编译的

2、概念;汇编语言的特点:汇编语言的特点:1 1 程序效率高,占存储空间小,运行速度快;程序效率高,占存储空间小,运行速度快;2 2 使用汇编语言比高级语言难,需对硬件有相当了解;使用汇编语言比高级语言难,需对硬件有相当了解;3 3 缺乏通用性,不易移植;缺乏通用性,不易移植;4源程序使用机器汇编要考虑汇编程序的约定源程序使用机器汇编要考虑汇编程序的约定1 1按指令格式和语法规则编写程序。按指令格式和语法规则编写程序。常数的表示:常数的表示:十进制数:十进制数:2020十六进制数:十六进制数:8787H H,0F0H0F0H二进制数:二进制数:0101100101011001B B字符:字符:H

3、H字符串:字符串:“Hello”Hello”。2 2使用伪指令提供汇编信息使用伪指令提供汇编信息。5汇编的主要任务:汇编的主要任务:1 1)确定程序中每条汇编语言指令的指令机器码。)确定程序中每条汇编语言指令的指令机器码。2 2)确定每条指令在存储器中的存放地址。)确定每条指令在存储器中的存放地址。3 3)提供错误信息。)提供错误信息。4 4)提供目标执行文件()提供目标执行文件(*.OBJ/.OBJ/*.HEX).HEX)和列表文件和列表文件(*.LST.LST)。)。b一一.汇编语言指令类型汇编语言指令类型1 1 机器指令机器指令:指令系统中的全部指令,每条指令有对应的机器代码。指令系统中

4、的全部指令,每条指令有对应的机器代码。2 2 伪指令伪指令:汇编控制指令,仅提供汇编信息,没有指令代码。汇编控制指令,仅提供汇编信息,没有指令代码。6一一.汇编语言指令类型汇编语言指令类型3 3 宏指令宏指令:宏汇编功能:将需要多次反复执行的程序段定义成一宏汇编功能:将需要多次反复执行的程序段定义成一个宏指令名(宏定义),编程时,可在程序中使用个宏指令名(宏定义),编程时,可在程序中使用宏指令名来替代一段程序(宏调用)。宏指令名来替代一段程序(宏调用)。b宏定义过程宏定义过程:b宏指令名宏指令名 MACRO 形式参数形式参数b ;定义程序段;定义程序段b ENDMb宏调用过程:宏调用过程:b

5、b 宏指令名宏指令名 实际参数实际参数b b 宏指令名宏指令名 实际参数实际参数7 二二汇编控制指令汇编控制指令(伪指令伪指令)常用伪指令及其功能:常用伪指令及其功能:1.1.ORGORG起始地址指令:指明程序和数据块起始地址。起始地址指令:指明程序和数据块起始地址。指令地址指令地址 机器码机器码源程序源程序ORGORG 2000H 2000H 2000H 78 30 2000H 78 30 MAIN MAIN:MOV R0MOV R0,#30H#30H 2002H E6 2002H E6MOV AMOV A,R0R0 ORG 3000HORG 3000H 3000H 23 3000H 23D

6、B 23HDB 23H,100100,A A 3001H 64 3001H 64 3002H 3002H4141b2.2.D B D B 定 义 字 节 型 常 数 指 令。定 义 字 节 型 常 数 指 令。例:例:DB 12H DB 12H,100100,AA8 4.4.EQU EQU 等值。为标号或标识符赋值。等值。为标号或标识符赋值。X1 X1 EQU 2000HEQU 2000HX2 X2 EQU 0FHEQU 0FH MAIN:MAIN:MOV DPTRMOV DPTR,#X1#X1 ADD AADD A,#X2#X2b 5.5.ENDEND 结束汇编指令。结束汇编指令。b例:例:

7、STARTSTART:b b END END START STARTb3.3.DW DW 定义字型常数指令。定义字型常数指令。例:例:DW 1234H DW 1234H,5678H5678H9b6 DS6 DS7.BIT7.BIT 位定义命令。位定义命令。b例:例:AQ BIT P1.0 AQ BIT P1.0(也可以是绝对地址)(也可以是绝对地址)10一一.确定方案和计算方法确定方案和计算方法二二.了解应用系统的硬件配置、性能指标。了解应用系统的硬件配置、性能指标。三三.建立系统数学模型,确定控制算法和操作步骤。建立系统数学模型,确定控制算法和操作步骤。四四.画程序流程图画程序流程图 表示程

8、序结构和程序功能表示程序结构和程序功能 五五.编制源程序编制源程序1.1.合理分配存储器单元和了解合理分配存储器单元和了解I/OI/O接口地址。接口地址。2.2.按功能设计程序,明确各程序之间的相互关系。按功能设计程序,明确各程序之间的相互关系。3.3.用注释行说明程序,便于阅读和修改调试和修改。用注释行说明程序,便于阅读和修改调试和修改。开始开始1 YN?11 :直线程序、分支程序、循环程序、子程序直线程序、分支程序、循环程序、子程序b直线程序又称简单程序,程序走向只有一条路径。直线程序又称简单程序,程序走向只有一条路径。双字节变补程序双字节变补程序(设数据在设数据在R4R5R4R5中中):

9、bMOVMOV A A,R5R5;取低字节;取低字节bCPLCPL A AbADDADD A A,#1#1;低字节变补;低字节变补bMOVMOV R5 R5,A AbMOVMOV A A,R4R4;取高字节;取高字节bCPLCPL A AbADDC AADDC A,#0#0;高字节变补;高字节变补bMOVMOV R4 R4,A A12例例 4-2-1-1 4-2-1-1 压缩式压缩式BCDBCD码分解成为单字节码分解成为单字节BCDBCD码。码。bMOVMOV R0 R0,#40H#40H;设指针;设指针bMOVMOV A A,R0R0;取一个字节;取一个字节bMOVMOV R2 R2,A A

10、;暂存;暂存bANLANL A A,#0FH#0FH;清;清0 0高半字节高半字节bINCINC R0 R0bMOVMOV R0 R0,A A ;保存数据个位;保存数据个位bMOVMOV A A,R2R2bSWAP ASWAP A ;十位换到低半字节;十位换到低半字节bANLANL A A,#0FH#0FHbINCINC R0 R0bMOVMOV R0 R0,A A;保存数据十位;保存数据十位片内RAM42H0 十41H0 个40H 十十 个个13由条件转移指令构成程序判断框部分,形成程序分支结构。由条件转移指令构成程序判断框部分,形成程序分支结构。4-2-2-14-2-2-1单重分支程序单重

11、分支程序一个判断决策框,程序有两条出路。一个判断决策框,程序有两条出路。两种分支结构:两种分支结构:条件满足?N影响条件Y处理段条件满足?N影响条件Y处理1处理2例例 求求R2R2中补码绝对值,正数不变,中补码绝对值,正数不变,负数变补。负数变补。MOV AMOV A,R2R2 JNB ACC.7JNB ACC.7,NEXTNEXT;为正数?;为正数?CPL ACPL A ;负数变补;负数变补 INC AINC A MOV R2MOV R2,A ANEXTNEXT:SJMP NEXT SJMP NEXT ;结束;结束14行李计价:行李计价:当当G5,M=G3;当当G5,M=G3+(G-5)(5

12、-3)FRT:MOV A,40H;取行李重量计价单位;取行李重量计价单位G MOV R3,A MOV B,#03H;M=G3 MUL AB MOV R2,A;暂存;暂存3G MOV A,R3;取回;取回G CJNE A,#05H,L1;G5?SJMP WETCL1:JC WETC;是,转至;是,转至WETC SUBB A,#05H;否则;否则M=3G+2(G-5)RLC A ADD A,R2WETC:MOV 41H,A;存结果;存结果M RET154-2-2-2 4-2-2-2 多重分支程序多重分支程序一多次使用条件转移指令一多次使用条件转移指令,形成两个以上判断框。,形成两个以上判断框。例例

13、 求符号函数求符号函数Y=SGN(X)Y=SGN(X)+1 +1 当当 X0 X0SGN(X)=0 SGN(X)=0 当当 X=0 X=0 -1 -1 当当 X0 X0X0?Y取XNY=0Y=+1开始Y=1X0?NY保存Y结束图4-4-4求符号函数流程图SYMB:MOV A,40H;取;取X JZ STOR ;X=0,Y=X JB ACC7,MINUS;X0 MOV A,#1 ;X0,Y=+1 SJMP STORMINUS:MOV A,#0FFH;X0,Y=-1STOR:MOV 41H,A;保存;保存Y RET16二按分支号转移二按分支号转移如:分支号如:分支号=0,程序转移到,程序转移到AD

14、DR0处;当分支号处;当分支号=1,程序转移到程序转移到ADDR1处;处;。(1)用地址表法。设分支号已存入用地址表法。设分支号已存入A。MTJS:MOV DPTR,#TAB ;取表首地址取表首地址 CLR C ;分支号分支号2 RLC A MOV R2,A INC A MOVC A,A+DPTR;取分支地址低位取分支地址低位 PUSH ACC ;入栈保存入栈保存 MOV A,R2 MOVC A,A+DPTR;取分支地址高位取分支地址高位 PUSH ACC ;入栈保存入栈保存 RET ;分支地址分支地址PC,转移转移TAB:DW ADDR0 ;分支地址表分支地址表 DW ADDR1 ADDR0

15、:;程序段程序段0 A=?0处理一处理二处理1n17(2)转移表法。转移表法。用分支转移指令用分支转移指令 JMP A+DPTR JMP A+DPTR。设。设R7R6=分支号分支号MTJS:MOV DPTR,#TAB;指向表首地址;指向表首地址 MOV A,R7 ;分支号高字节;分支号高字节3 MOV B,#03H MUL AB ;乘积不超过;乘积不超过1字节字节 ADD A,DPH MOV DPH,A MOV A,R6 ;分支号低字节;分支号低字节3 MOV B,#03H MUL AB XCH A,B ADD A,DPH ;DPHDPH+(R7、R6)3)高字节高字节 MOV DPH,A X

16、CH A,B ;A(R7、R6)3)低字节低字节 JMP A+DPTR ;实现多分支转移;实现多分支转移TAB:LJMP ADDR0 ;转移表;转移表 LJMP ADDR1 LJMP ADDRNADDR0:;程序段;程序段0 A+DPTRTAB+R7R6A+DPTRTAB+R7R63 3DPTRTABDPTRTABJMP A+DPTRJMP A+DPTRLJMP ROUT0LJMP ROUT0 LJMP ROUT1LJMP ROUT1LJMP ROUTnLJMP ROUTnR6R6R7R73 3DPLDPLDPHDPHA A+18包含多次重复执行的程序段,循环结构使程序紧凑。包含多次重复执行的

17、程序段,循环结构使程序紧凑。4-2-3-14-2-3-1循环程序的构成循环程序的构成循环控制?循环工作循环结束循环初始化YN各个环节任务:各个环节任务:一初始化部分一初始化部分循环准备工作。如:清结果单元、循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。设指针、设循环控制变量初值等。二循环体二循环体循环工作部分:循环工作部分:需多次重复处理的工作。需多次重复处理的工作。循环控制部分:循环控制部分:1.1.修改指针和循环控制变量。修改指针和循环控制变量。2.2.检测循环条件:满足循环条件,继续循环,否则退出循环。检测循环条件:满足循环条件,继续循环,否则退出循环。三三.结束部分结束部

18、分 处理和保存循环结果。处理和保存循环结果。允许允许0 0次循环的循环结构:在循环工作之前检测循环条件。次循环的循环结构:在循环工作之前检测循环条件。194-2-34-2-3-2 -2 单重循环单重循环简单循环结构:循环体中不套循环。简单循环结构:循环体中不套循环。b例:求例:求n n个单字节数据的累加,设数据串已在个单字节数据的累加,设数据串已在43H43H起始单元,起始单元,数据串长度在数据串长度在42H42H单元,累加和不超过单元,累加和不超过2 2个字节。个字节。片内RAMXn43HX142Hn41HSUMH40HSUMLSUMSUM:MOVMOVR0R0,#42H#42H;设指针;设

19、指针MOVMOVA A,R0R0MOVMOVR2R2,A A ;循环计数器;循环计数器nnCLRCLRA A ;结果单元清;结果单元清0 0MOVMOVR3R3,A AADD1ADD1:INCINCR0R0 ;修改指针;修改指针ADDADDA A,R0 R0 ;累加;累加JNC NEXTJNC NEXT ;处理进位;处理进位INCINCR3R3 ;有进位,高字节加;有进位,高字节加1 1NEXT:NEXT:DJNZ DJNZ R2,ADD1 R2,ADD1;循环控制:数据是否加完;循环控制:数据是否加完?MOVMOV40H40H,A A ;循环结束,保存结果;循环结束,保存结果MOVMOV41

20、H41H,R3R3RETRET20循环控制方法:计数控制、特征标志控制。循环控制方法:计数控制、特征标志控制。一一.计数控制:计数控制:设循环计数器,控制循环次数。正计数和倒计数两种方式。设循环计数器,控制循环次数。正计数和倒计数两种方式。例:为一串例:为一串7 7位位ASCIIASCII码数据的码数据的D D7 7位加上奇校验,设数据存放位加上奇校验,设数据存放在片外在片外RAMRAM的的2101H2101H起始单元,数据长度在起始单元,数据长度在2100H2100H单元。单元。片外RAM2102H011010002101H001011012100HnMOV DPTRMOV DPTR,#21

21、00H#2100HMOVX AMOVX A,DPTRDPTRMOV R2MOV R2,A ANEXTNEXT:INC DPTRINC DPTRMOVX AMOVX A,DPTRDPTRORL AORL A,#80H#80HJNB PJNB P,PASSPASSMOVX DPTRMOVX DPTR,A APASSPASS:DJNZ R2DJNZ R2,NEXTNEXTDONEDONE:SJMP DONESJMP DONE21二二.特征控制:设定循环结束标志实现循环控制。特征控制:设定循环结束标志实现循环控制。例:找正数表最小值。正数表存在片外例:找正数表最小值。正数表存在片外RAMRAM中以中以

22、LISTLIST为起为起始单元,用始单元,用-1-1作为结束标志。作为结束标志。STARTSTART:MOVMOVDPTRDPTR,#LIST#LIST ;数表首地址;数表首地址 MOV MOVB B,#127#127 ;预置最小值;预置最小值NEXTNEXT:MOVX A MOVX A,DPTRDPTR ;取数;取数 INC INCDPTRDPTR ;修改指针;修改指针 CJNE A CJNE A,#-1#-1,NEXT1NEXT1;是否为数表结尾?;是否为数表结尾?SJMP DONE SJMP DONE ;循环结束;循环结束NEXT1NEXT1:CJNE ACJNE A,B B,NEXT2

23、NEXT2 ;比较;比较NEXT2NEXT2:JNCJNCNEXTNEXT MOV MOVB B,A A ;保存较小值;保存较小值 SJMP NEXT SJMP NEXTDONEDONE:SJMP DONE SJMP DONE习题习题统计一班考试为统计一班考试为100100分和不及格人数,成绩单在分和不及格人数,成绩单在41H41H起始单元。起始单元。224-2-34-2-3-3 -3 多重循环多重循环循环体中套循环结构。以双重循环使用较多。循环体中套循环结构。以双重循环使用较多。例例将内存一串单字节无符号数升序排序。将内存一串单字节无符号数升序排序。步骤步骤:每次取相邻单元的两个数比较,决定

24、是否需要交换数据位置。每次取相邻单元的两个数比较,决定是否需要交换数据位置。第一次循环,比较第一次循环,比较N-1N-1次,取到数据表中最大值。次,取到数据表中最大值。第二次循环,比较第二次循环,比较N-2N-2次,取到次大值。次,取到次大值。第第N-1N-1次循环:比较一次,排序结束。次循环:比较一次,排序结束。片内RAMMAX5241TAB3内循环控制内循环控制?循环工作循环工作循环结束循环结束外循环控制外循环控制?内循环初始化内循环初始化开始开始外循环初始化外循环初始化23SORTSORT:MOV MOV A A,#N-1#N-1;N N个数据排序个数据排序 MOV MOV R4 R4,

25、A A;外循;外循环次数环次数LOOP1LOOP1:MOV MOV A A,R4R4 MOV MOV R3 R3,A A;内循;内循环次数环次数 MOV MOV R0 R0,#TAB#TAB;设数据指针;设数据指针LOOP2LOOP2:MOV MOV A A,R0R0;取二数;取二数 MOV MOV B B,A A INC INC R0 R0 MOV MOV A A,R0R0 CJNE A CJNE A,B B,L1L1;比较;比较L1L1:JNC JNC UNEX UNEX;ABAB,不交换,不交换 DEC DEC R0 R0;否则交换数据;否则交换数据 XCH XCH A A,R0R0 I

26、NC INC R0 R0 MOV MOV R0 R0,A AUNEXUNEX:DJNZ R3 DJNZ R3,LOOP2LOOP2;内循环结束?;内循环结束?DJNZ R4 DJNZ R4,LOOP1LOOP1;外循环结束?;外循环结束?RET RETR3R31=0?B(R0)A (R0+1)循环结束循环结束外循环次数外循环次数R4R4R41=0?内循环次数内循环次数R3表首表首TABR0开始开始A BA B?(R0)(R0+1)(R0)(R0+1)R0 R0+1R0 R0+1Y YN N24软件延时程序。软件延时程序。用循环程序将指令重复多次执行,实现软件延时。用循环程序将指令重复多次执行,

27、实现软件延时。试计算延时程序的执行时间。试计算延时程序的执行时间。源程序源程序指令周期指令周期(M)(M)指令执行次指令执行次数数习题习题DELAYDELAY:MOV R6MOV R6,#100#1001 1D1D1:MOV R7 MOV R7,#10#101 1D2D2:NOP NOP1 1 DJNZ R7DJNZ R7,D2D22 2 DJNZ R6 DJNZ R6,D1D12 2 RET RET2 2计算延时程序的执行时间计算延时程序的执行时间(设时钟设时钟f=12MHz,M=1s)f=12MHz,M=1s)。延时时间计算:(设时钟延时时间计算:(设时钟f=12MHzf=12MHz)t=

28、(1t=(11+11+1100+3100+310010010+210+2100+2100+21)1)M=3303sM=3303s1 1100100100100101010010010101001001 125子程序:能完成某项特定功能的独立程序段,可被反复调用。子程序:能完成某项特定功能的独立程序段,可被反复调用。4-2-4-1 4-2-4-1 子程序设计子程序设计一子程序入口用标号作为子程序名。一子程序入口用标号作为子程序名。二调用子程序之前设置好堆栈。二调用子程序之前设置好堆栈。三用返回指令三用返回指令RETRET结束子程序,并保结束子程序,并保 证堆栈栈顶为调用程序的返回地址。证堆栈栈顶

29、为调用程序的返回地址。四四.子程序嵌套须考虑堆栈容量。子程序嵌套须考虑堆栈容量。五五.提供足够的调用信息提供足够的调用信息:如:子程序名、子程序功能、入口如:子程序名、子程序功能、入口参数和出口参数、子程序占用的硬参数和出口参数、子程序占用的硬件资源、子程序中调用的其他子程件资源、子程序中调用的其他子程序名。序名。主程序CALL SCALL S子程序SRET264-2-4-2 子程序的类型按子程序与主程序之间传递参数的方式分类。按子程序与主程序之间传递参数的方式分类。入口参数:调用子程序之前,需要传给子程序的参数。入口参数:调用子程序之前,需要传给子程序的参数。出口参数:子程序送回调用程序的结

30、果参数。出口参数:子程序送回调用程序的结果参数。选用不同的参数传递方式。选用不同的参数传递方式。1.1.寄存器传送参数寄存器传送参数2.2.存储器传送参数存储器传送参数3.3.堆栈传送参数堆栈传送参数设计子程序应满足通用性的要求,不针对具体数据编程。设计子程序应满足通用性的要求,不针对具体数据编程。如:如:1.1.子程序功能为求单字节数的立方:子程序功能为求单字节数的立方:A AA A3 3,入口参数和出口参数为,入口参数和出口参数为A A。2.2.子程序功能为求单字节数的子程序功能为求单字节数的n n次方:次方:(41H)(42H)(41H)(42H)(40H)(40H)A A,入口参数为,

31、入口参数为(40H)(40H)和和A A,出口参数为出口参数为(42H)(41H)(42H)(41H)。27例:将例:将R4R5R6R4R5R6中三个字节数据对半分解,变成中三个字节数据对半分解,变成6 6个字节,个字节,存入显示缓冲区存入显示缓冲区(DISMEM0(DISMEM0DISMEM5)DISMEM5)。1 1)子程序)子程序UFOR1UFOR1的功能:将的功能:将A A累加器累加器中单字节数据,对半分解成两个字中单字节数据,对半分解成两个字节,存入节,存入R0R0所指向的相邻两个单元所指向的相邻两个单元UFOR1UFOR1:MOV R0MOV R0,#0#0 XCHD A XCHD

32、 A,R0 R0;保存低半字节;保存低半字节 INC R0 INC R0 ;修改指针;修改指针 MOV R0 MOV R0,#0#0 SWAP A SWAP A XCHD A XCHD A,R0 R0;保存高半字节;保存高半字节 RET RET2 2)调用子程序)调用子程序UFOR1UFOR1之前,将待分解之前,将待分解的内容送的内容送A A,存放地址送,存放地址送R0R0。RAMR0+10 AH R00 ALLED 数码管 5 4 3 2 1 028例例 比较两个数据串是否完全相等,若完全相等,比较两个数据串是否完全相等,若完全相等,A=0A=0;否则否则A=FFHA=FFH。PMTPMT:

33、MOVMOVR2R2,A A;设数串长度;设数串长度CHCCHC:MOVMOVA A,R0R0;各取数串中的一个数;各取数串中的一个数MOVMOV42H42H,R1R1CJNE CJNE A A,42H42H,NOMNOM;是否相等?不相等转移;是否相等?不相等转移INCINCR0R0;相等,修改指针;相等,修改指针INCINCR1R1DJNZ DJNZ R2R2,CHCCHC;全部比较完?;全部比较完?MOVMOVA A,#0#0;完全相等;完全相等SJMP SJMP PENDPENDNOMNOM:MOVMOVA A,#0FFH#0FFH;不完全相等;不完全相等PENDPEND:RETRET

34、29例例:查表求出数据的:查表求出数据的ASCIIASCII码,再以字符形式输出。码,再以字符形式输出。1 1)子程序)子程序HEXASCHEXASC功能:取出堆栈中数据,查表将低功能:取出堆栈中数据,查表将低半字节转换成半字节转换成ASCIIASCII码送累加器码送累加器A A。2 2)分别将待转换数据入栈,然后调用子程序)分别将待转换数据入栈,然后调用子程序HEXASCHEXASC。33H32H31H30HR A M41H2340H01 MOV SP MOV SP,#30H#30H PUSH 40H PUSH 40H ;入口参数入栈;入口参数入栈 LCALL HEXASC LCALL HE

35、XASC POP POP A AHEXASCHEXASC:DECDEC SP SP ;跳过返回地址;跳过返回地址 DEC DEC SP SP POP POP A A ;取入口参数;取入口参数 ;查表求;查表求ASCIIASCII码码 PUSH A PUSH A ;保存出口参数;保存出口参数 INC INC SP SP ;指向返回地址;指向返回地址 INC INC SP SP RET RET DB DB 0 0,11,;ASCIIASCII码表码表30一一.多字节加法子程序,多字节加法子程序,Z=X+YZ=X+Y。ADDSADDS:CLRCLRC CLOOPLOOP:MOVMOVA A,R0R0

36、ADDC ADDC A A,R1 R1 ;加一字节;加一字节MOVMOVR0R0,A A ;存和一字节;存和一字节INCINCR0R0 ;修改指针;修改指针INCINCR1R1DJNZ DJNZ R2R2,LOOP LOOP;全部字节加完?;全部字节加完?RETRETYHR1YLXHR0XL习题习题1 1编写十进制多字节加法子程序,编写十进制多字节加法子程序,Z=X+YZ=X+Y。习题习题2 2编写多字节减法子程序,编写多字节减法子程序,Z=X-YZ=X-Y。思考题思考题修改程序使运算结果保存到其他存储单元。修改程序使运算结果保存到其他存储单元。31二二 多字节无符号数乘除运算多字节无符号数乘

37、除运算相加计算多字节乘法程序,步骤:相加计算多字节乘法程序,步骤:1.1.部分积清零。部分积清零。2.2.检测乘数各位,检测乘数各位,为为1 1则部分积对位加被乘数,否则加则部分积对位加被乘数,否则加0 0。3.3.对位方法:被乘数左移或部分积右移。对位方法:被乘数左移或部分积右移。初值:初值:0 00 00 0 Cy R4R5 Cy R4R5 右移右移R6R7R6R7并检测并检测CyCy +R2R3+R2R3 当当Cy=1 Cy=1 Cy R4R5 Cy R4R5 得部分积并右移对位得部分积并右移对位 乘积最后右移一次乘积最后右移一次 110110 101 101 110110 000 00

38、0+110+110 11110 11110 例例:双字节相乘:双字节相乘 R2R3 R2R3R6R7R6R7R4R5R6R7R4R5R6R7解解:部分积清零,右移检测乘数,决定部分积是否加被:部分积清零,右移检测乘数,决定部分积是否加被乘数,部分积右移对位。乘数,部分积右移对位。循循环环1616次次32相减计算多字节除法程序,步骤:相减计算多字节除法程序,步骤:1.1.对齐高位被除数试减除数。对齐高位被除数试减除数。2.2.若够减商上若够减商上1 1,不够减商上,不够减商上0 0且恢复余数。且恢复余数。3.3.余数左移或除数右移对位。余数左移或除数右移对位。4.4.循环重复前循环重复前3 3步

39、,直至取够相应位数的商。步,直至取够相应位数的商。例例R2R3R4R5R2R3R4R5R6R7R6R7R4R5(R4R5(余数余数R2R3)R2R3)解解1.1.判断判断R2R3R2R3R6R7R6R7?使商不大于?使商不大于1616位。位。2.2.被除数左移被除数左移1 1位,试减除数。位,试减除数。3.3.若够减,商加若够减,商加1 1并保留余数。并保留余数。101110101/0101 0100 0101 1001 0101 1001 0101 1000 0101 011 CyR2R3R4R50 CyR2R3R4R50 -R6R7-R6R7 +1+1 够减够减 R2R3 R2R3 不够减

40、恢复余数不够减恢复余数循循环环1616次次33(一一)十六进制数转换为十六进制数转换为ASCII码码(二二)ASCII码转换为十六进制数码转换为十六进制数09的的ASCII码:码:3039H,AF的的ASCII码:码:4146H。HASC:CJNE A,#0AH,NAHEX:CLR CN:JNC N1SUBB A,#30HADD A,#30HCJNE A,#0AH,NSJMP SEN:JC N1N1:ADD A,#37HSJMP AESE:RETN1:SUBB A,#11HCJNE A,#06H,N2N2:JNCERRADDA,#0AHSJMP AEERR:MOVA,#0FFHAE:RET34

41、(三三)BCD码与二进制数之间的转换码与二进制数之间的转换有乘法和除法两种转换方式有乘法和除法两种转换方式。1BCD码转换为二进制数码转换为二进制数 D=dn-110n-1+dn-210n-2+d1101+d0100 =(dn-110+dn-2)10+dn-3)10+d1)10+d0“整数十翻二整数十翻二”:从最高位开始,按二进制运算法则循环:从最高位开始,按二进制运算法则循环“乘十乘十加次低位加次低位”:B=B10+bi 。R30R30R40R401010R3R3R4R4+(R0)(R0)R3R3R4R4R0R0+1R0R0+1352二进制数转换为二进制数转换为BCD码码B=bn-12n-1

42、+bn-22n-2+b121+b020 =(bn-12+bn-2)2+bn-3)2+b1)+b0“整数二翻十整数二翻十”:从最高位开始,按十进制运算法则循环:从最高位开始,按十进制运算法则循环“乘二加次低位乘二加次低位”:D=D2+di 。除法转换式:除法转换式:b bn-1n-12 2n-1 n-1+b+bn-2n-22 2n-2n-2+b+b0 0=d=dm-1m-11010m-1 m-1+d+dm-2m-21010m-2m-2+d+d0 0两边同时除基数,两边的整数或小数应该分别相等。两边同时除基数,两边的整数或小数应该分别相等。除基数,取出除基数,取出1位余数,得到的商继续除基数取余数。循环位余数,得到的商继续除基数取余数。循环“除除基取余基取余”操作,得到转换进制的各位系数。操作,得到转换进制的各位系数。感谢您的聆听!感谢您的聆听!

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|