




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 汇编语言程序设计计算机在完成一项工作时,必须按照顺序执行各项操作。这些操作是计算机程序设计人员按照解决问题的步骤事先描述好的算法,设计出相应的程序,然后由计算机去执行。程序设计就是用计算机所能接受的形式把解决问题的步骤描述出来。本章介绍汇编语言程序设计的基础知识,通过实例让学习汇编语言程序的设计方法。本章总体要求: 熟练掌握汇编语言语句的格式、常用的伪指令和程序流程图熟练掌握汇编语言语句的格式、常用的伪指令和程序流程图1掌握汇编语言程序设计的步骤和技巧掌握汇编语言程序设计的步骤和技巧 2熟悉顺序、分支、循环结构和子程序调用等程序的应用特征熟悉顺序、分支、循环结构和子程序调用等程序的应用
2、特征3能够独立完成本章作业能够独立完成本章作业4本章重点:本章重点: 汇编语言程序设计中常用伪指令的使用汇编语言程序设计中常用伪指令的使用 1汇编语言程序设计的步骤汇编语言程序设计的步骤 2分支与循环描述的理解与实现分支与循环描述的理解与实现 3综合程序的设计综合程序的设计 4本章难点:本章难点: 汇编语言程序设计算法的确定及绘制程序流程图汇编语言程序设计算法的确定及绘制程序流程图 1多重循环程序设计及子程序设计与调用多重循环程序设计及子程序设计与调用2综合应用程序设计的实现综合应用程序设计的实现34.1.1 程序设计语言程序设计语言1机器语言:机器语言是直接面向硬件的二机器语言:机器语言是直
3、接面向硬件的二进制代码指令。进制代码指令。2汇编语言:汇编语言是机器语言的符号表汇编语言:汇编语言是机器语言的符号表示,与机器语言一一对应,编程效率高,示,与机器语言一一对应,编程效率高,实时性好,但也不能跨平台工作。实时性好,但也不能跨平台工作。3高级语言:高级语言是一种面向算法和过高级语言:高级语言是一种面向算法和过程的语言程的语言 。4.1 汇编语言简介汇编语言简介4.1.2 汇编语言格式 汇编语言语句格式为:汇编语言语句格式为:标号:操作码标号:操作码 操作数操作数 ;注释;注释 1.标号是由用户定义的符号地址,指明该指标号是由用户定义的符号地址,指明该指令的起始地址。令的起始地址。
4、标号是由英文字母开头的标号是由英文字母开头的18个字母和数字个字母和数字组成的字符串,以冒号组成的字符串,以冒号“:”结尾。结尾。2操作码操作码操作码表示该语句要执行的操作内容,是操作码表示该语句要执行的操作内容,是每一条汇编语言必有的部分。操作码用助每一条汇编语言必有的部分。操作码用助记符表示,在操作码后面至少要有一个空记符表示,在操作码后面至少要有一个空格,使它与操作数分开。格,使它与操作数分开。3操作数操作数操作数是该指令操作所需要的数据。操作数是该指令操作所需要的数据。 注意:这一字段可能有也可能没有,当多于注意:这一字段可能有也可能没有,当多于一个操作数时,操作数之间用逗号分隔。一个
5、操作数时,操作数之间用逗号分隔。 操作数字段的内容可以包括以下几项:操作数字段的内容可以包括以下几项:(1)工作寄存器名;)工作寄存器名;(2)特殊功能寄存器名;)特殊功能寄存器名;(3)标号名;)标号名;(4)常数;)常数;(5)$:该符号用来表示程序计数器的当:该符号用来表示程序计数器的当前值。该符号常出现在转移指令中;前值。该符号常出现在转移指令中;(6)表达式:在汇编时,计算出表达式的)表达式:在汇编时,计算出表达式的值,并把该值填入目标码中。值,并把该值填入目标码中。 4注释注释注释不是汇编语言的功能部分,它是语句注释不是汇编语言的功能部分,它是语句的说明部分,用于改善程序的可读性,
6、它的说明部分,用于改善程序的可读性,它以分号以分号“;”开始。注释可为一行或多行开始。注释可为一行或多行(每行均以分号开始)。(每行均以分号开始)。 4.1.3 伪指令伪指令 所谓伪指令又称为伪操作,它不象机器指所谓伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编时,由的,它是在汇编程序对源程序汇编时,由汇编程序处理的操作,它们可以完成如数汇编程序处理的操作,它们可以完成如数据定义、分配存储器、指示程序结束等功据定义、分配存储器、指示程序结束等功能。能。1汇编起始地址命令汇编起始地址命令 格式:格式:org
7、nn 功能:规定此命令之后的程序或数据的存功能:规定此命令之后的程序或数据的存放起始地址。放起始地址。 org伪指令总是出现在每段源程序或数据伪指令总是出现在每段源程序或数据块的开始。块的开始。2定义字节伪指令定义字节伪指令格式:格式:标号:标号: db x1,x2,xn功能:从指定地址开始,存放若干字节数据。功能:从指定地址开始,存放若干字节数据。注意:在程序存储器空间定义注意:在程序存储器空间定义8位单字节数据,位单字节数据,通常用于定义一个常数表。通常用于定义一个常数表。xi为单字节数据,为单字节数据,它为二进制、八进制、十进制或十六进制数,它为二进制、八进制、十进制或十六进制数,也可以
8、为一个表达式,还可以是由两个单引也可以为一个表达式,还可以是由两个单引号所括起来的一个字符串,或单引号括起来号所括起来的一个字符串,或单引号括起来的字符。的字符。3字定义伪指令字定义伪指令格式:格式:标号:标号: dw y1,y2,yn功能:从指定地址开始,存放若干字数据。功能:从指定地址开始,存放若干字数据。注意:在程序存储器空间定义双字节数据,注意:在程序存储器空间定义双字节数据,经常用于定义一个地址表。经常用于定义一个地址表。yi为双字节数为双字节数据,它可以为十进制或十六进制的数,也据,它可以为十进制或十六进制的数,也可以为一个表达式。高位数在前,低位数可以为一个表达式。高位数在前,低
9、位数在后。在后。 例如:例如: org 1000h data:dw 3241h,1234h,78h 上述程序将对从上述程序将对从1000h单元开始的单元开始的6个单元个单元赋值,赋值情况如何呢?赋值,赋值情况如何呢? (1000h)=32h,(,(1001h)=41h,(1002h)=12h,(,(1003h)=34h,(1004h)=00h,(,(1005h)=78h。4汇编结束伪指令汇编结束伪指令 end 该伪指令指出结束汇编,即使后面还有指令,该伪指令指出结束汇编,即使后面还有指令,汇编程序也不处理。汇编程序也不处理。5赋值伪指令赋值伪指令格式:标号格式:标号 equ 表达式表达式功能:
10、将表达式的值(数据或地址)赋给标功能:将表达式的值(数据或地址)赋给标 号。号。 注意:标号为字符名称,其后无冒注意:标号为字符名称,其后无冒号。在一个程序中对于某一个标号号。在一个程序中对于某一个标号只能赋一次值,一旦赋值在本程序只能赋一次值,一旦赋值在本程序的任意位置就可以引用该标号。的任意位置就可以引用该标号。 例如:例如:org 3000hstaequ 80htabequ 10mulequ 4000hmov a,stamov b,tablcall mul定义了三个标号:定义了三个标号:sta=80h,tab=10,mul=4000h,在程,在程序中直接引用这三个序中直接引用这三个标号来
11、代替标号来代替80h、10、4000h。6位定义伪指令位定义伪指令格式:格式:标号标号 bit 位地址位地址功能:将位地址赋给标号。功能:将位地址赋给标号。其中,标号为字符名称,其后无冒号。其中,标号为字符名称,其后无冒号。例如:例如:a1 bit p0.1a2 bit psw.34.2 汇编语言程序设计汇编语言程序设计4.2.1 汇编程序设计基础汇编程序设计基础1汇编语言程序设计的步骤:汇编语言程序设计的步骤: (1)分析问题,明确任务)分析问题,明确任务(2)确定算法)确定算法 (3)画出程序流程图)画出程序流程图 (4)编写源程序)编写源程序(5)汇编和调试)汇编和调试2汇编语言程序的格
12、式汇编语言程序的格式org 起始地址起始地址 ;数据存放;数据存放 ;程序代码;程序代码sjmp $ ;原地踏步;原地踏步end3汇编语言源程序的汇编汇编语言源程序的汇编 汇编语言源程序必须转换成计算机能过识汇编语言源程序必须转换成计算机能过识别的目标程序后才能执行,汇编方法通常别的目标程序后才能执行,汇编方法通常有有机器汇编机器汇编和和手工汇编手工汇编两种方法。两种方法。4汇编语言程序设计的技巧汇编语言程序设计的技巧(1)尽量采用模块化、结构化的程序设计方)尽量采用模块化、结构化的程序设计方法。法。 (2)合理地绘制程序流程图)合理地绘制程序流程图 (3)少用无条件转移指令,尽量采用循环结)
13、少用无条件转移指令,尽量采用循环结构和子程序结构。构和子程序结构。(4)充分利用累加器。)充分利用累加器。 (5)精心设计主要程序段。)精心设计主要程序段。 (6)对于中断要注意保护和恢复现场。)对于中断要注意保护和恢复现场。4.2.2 顺序程序设计顺序程序设计 顺序结构程序又称为简单结构程序,是指顺序结构程序又称为简单结构程序,是指一种顺序执行的程序,程序从第一条指令一种顺序执行的程序,程序从第一条指令到最后一条指令的整个执行过程中既无分到最后一条指令的整个执行过程中既无分支又无循环。支又无循环。【例例4.1】两个两个8位无符号数相加,和仍为位无符号数相加,和仍为8位。位。分析:假设两个无符
14、号数分析:假设两个无符号数x、y分别存放于内部分别存放于内部ram的的60h、61h单元中,求和并存于单元中,求和并存于62h单元单元中。中。 程序如下:程序如下:org 2000hmovr0,#60h;设;设r0为数据指针为数据指针mova, r0;将;将x值送入值送入a中中incr0adda,r0;x+yincr0movr0,a;保存结果;保存结果sjmp $ ;原地踏步;原地踏步end【例例4.2】假设两个双字节无符号数,分别存假设两个双字节无符号数,分别存放在放在r1r0和和r3r2中,高字节在前,低字中,高字节在前,低字节在后。编程使两数相加,用节在后。编程使两数相加,用r2r1r0
15、存放存放和。和。 对多字节的加法,存在最高位的进位问题。对多字节的加法,存在最高位的进位问题。如果最高位有进位,则和的字节数要比加如果最高位有进位,则和的字节数要比加数或被加数的字节数多一个。数或被加数的字节数多一个。org 1000hclr cmov a,r0;取被加数低字节;取被加数低字节aadd a,r2;与加数低字节相加;与加数低字节相加mov r0,a;存和数低字节;存和数低字节mov a,rl;取被加数高字节;取被加数高字节aaddc a,r3;与加数高字节相加;与加数高字节相加mov r1,a;存和数高字节;存和数高字节mov a,#0addc a,#0;加进位位;加进位位mov
16、 r2,a ;存和数进位位;存和数进位位sjmp $ ; end【例例4.3】16位二进制数求补,设两个字节原位二进制数求补,设两个字节原码数存在码数存在r1r0中,求补后结果存在中,求补后结果存在r3r2中。中。分析:二进制数求补操作,可采用分析:二进制数求补操作,可采用“原码求原码求反反+1”的方法来实现,可使用求反指令和加的方法来实现,可使用求反指令和加法指令来实现。法指令来实现。程序如下:程序如下:org 1000hmova,r0 ;低;低8位送位送acpla;adda,#01h;movr2,a;送结果低位;送结果低位mova,r1 ;高;高8位送位送acpla;addca,#00h;
17、加进位;加进位movr3,a;送结果高位;送结果高位sjmp$end【例例4.4】将内部将内部ram的的60h单元中的无符号单元中的无符号二进制数转换为二进制数转换为3位位bcd码,并将结果按由码,并将结果按由高位到低位的顺序存放到高位到低位的顺序存放到63h、62h、61h单元中。单元中。分析:分析:8位无符号二进制数表示的数据范围位无符号二进制数表示的数据范围0255,所以用,所以用bcd码,最多码,最多3位。可将被位。可将被转换的数除以转换的数除以100,商即百位数;余数再除,商即百位数;余数再除以以10得十位数;最后余数即为个位数。得十位数;最后余数即为个位数。编程如下:编程如下:or
18、g 1000hhbcd: mov a,60h;取原数据;取原数据mov b,#100;除数;除数100bdiv ab ;除;除100mov 63h,a ;百位;百位bcdmov a,bmov b,#10 ;除数;除数10bdiv ab ;mov 62h,a ;存十位;存十位bcd mov 61h,b;存个位;存个位bcdsjmp $end4.2.3 分支程序设计图图4-1 4-1 分支程序流程图分支程序流程图【例例4.5】设内部设内部ram 60h和和61h单元中存放单元中存放两个无符号数,试比较它们的大小。将较两个无符号数,试比较它们的大小。将较小的数存放在小的数存放在60h单元,较大的数存
19、放在单元,较大的数存放在61h单元中。单元中。分析:这是一个简单分支程序,可以使两数分析:这是一个简单分支程序,可以使两数相减,用相减,用jc指令进行判断。若指令进行判断。若cy=1,则被,则被减数小于减数。减数小于减数。 org1000hstart:clr c ;0cy mova,60h subba,61h;做减法比较两数;做减法比较两数 jc next;若;若(60h)小,则转移小,则转移 mova,60h xch a, 61h;交换两数;交换两数 mov 60h,a next: nop sjmp $ end【例例4.6】将将r2中的一位十六进制数转换为中的一位十六进制数转换为ascii码
20、,结果仍存放于码,结果仍存放于r2中。中。分析:数字分析:数字09的的ascii码分别是码分别是30h39h,英文大写字母英文大写字母af的的ascii码分别是码分别是4146h。因此,若该十六进制数小于。因此,若该十六进制数小于10,要转换为要转换为ascii码应加码应加30h,若该十六进制,若该十六进制数大于数大于10,则加,则加37h。 org 1000hmov a,r2cjne a,#0ah,l1l1:jnc add37add30:add a,#30hmov r2,asjmp finishadd37:add a,#37hmov r2,afinish:sjmp $end【例例4.7】设变
21、量设变量x存入存入30h单元,求得函数单元,求得函数y存入存入31h单元。按下式要求给单元。按下式要求给y赋值:赋值: x+1 (10 x) y= 0 (5x10) x-1 (x10时,采用时,采用cjne和和jc以及以及cjne和和jnc指令进行判断。指令进行判断。程序如下:程序如下:org 1000hmov a,30h ;取;取xcjne a,#5,nextl;与;与5比较比较next1:jc next2 ;x5,则转,则转next2mov r0,a ;inc r0 ;设;设1010,则转,则转next4 mov r0, #0 ;5x10,y=0 sjmp next4next2:mov r
22、0,a dec r0 ;x5,y=x-1next4:mov 31h,r0 ;存结果;存结果sjmp $end4.2.4 循环程序设计循环程序设计循环程序一般包括以下循环程序一般包括以下5部分:部分: 初始化部分:循环程序的准备部分,把初始参数初始化部分:循环程序的准备部分,把初始参数赋给控制变量。赋给控制变量。 循环处理部分:循环程序反复执行的部分,这是循环处理部分:循环程序反复执行的部分,这是循环程序的实体。循环程序的实体。 修改部分:修改控制变量的值,为进入下一轮循修改部分:修改控制变量的值,为进入下一轮循环做准备。环做准备。 控制部分:根据循环结束条件,判断循环是否结控制部分:根据循环结
23、束条件,判断循环是否结束。束。 结束部分:分析、处理及存放程序执行结果。结束部分:分析、处理及存放程序执行结果。 循环程序的结构一般由两种形式:1单循环程序设计单循环程序设计【例例4.8】循环次数已知的单重循环。循环次数已知的单重循环。 在内部在内部ram的的 20h2fh连续连续16个单元中个单元中存放单字节无符号数。求这存放单字节无符号数。求这16个无符号数个无符号数之和,并存入内部之和,并存入内部ram 61h和和60h中。中。分析:这是重复相加问题,且事先知道循环分析:这是重复相加问题,且事先知道循环次数,故采用计数器控制的循环程序设计次数,故采用计数器控制的循环程序设计方法。设用方法
24、。设用r0作加数地址指针,作加数地址指针,r7作循环作循环次数计数器,次数计数器,r3作和数的高字节寄存器。作和数的高字节寄存器。 org 0200hstart:mov r7,#15 ;循环次数;循环次数 mov r3,#0 ;装和的高字节;装和的高字节mov a, 20h ;mov r0,#21h ;加数的地址;加数的地址 loop:add a,r0 ;累加和在;累加和在a中中 jnc next ;没进位则跳;没进位则跳next inc r3 ;有进位,则高位加;有进位,则高位加1 next:inc r0 ;加数地址加;加数地址加1 djnz r7,loop mov 61h,r3;将和的高位
25、传;将和的高位传51h中中mov 60h,a ;将和的低位传;将和的低位传50h中中sjmp $ end 【例例4.9】循环次数未知的单重循环。循环次数未知的单重循环。设有一字符串存放在内部设有一字符串存放在内部ram 21h开始的单开始的单元中,并以元中,并以“$”作为结束标志,请计算该作为结束标志,请计算该字符串的长度,并将其存入字符串的长度,并将其存入20h单元。单元。分析:该字符串长度事先未知,但知道结束分析:该字符串长度事先未知,但知道结束条件,故采用条件控制的循环程序设计方条件,故采用条件控制的循环程序设计方法。法。 程序如下:程序如下:org 0200hmov a, #0mov
26、r0, #21hloop:cjne r0, #24h, nextsjmp exitnext:incaincr0sjmp loopexit:mov 20h, asjmp $ end 2多重循环程序设计多重循环程序设计【例例4.11】设单片机使用设单片机使用12mhz晶振(机器晶振(机器周期周期t为为1s),设计延时),设计延时1s的程序。的程序。分析:因为执行每条指令都需要一定的时间,分析:因为执行每条指令都需要一定的时间,其时间长短由指令周期和晶振频率决定其时间长短由指令周期和晶振频率决定(t=机器周期数机器周期数12振荡周期)。单条振荡周期)。单条指令的执行时间只有指令的执行时间只有1到几个
27、微秒,若需要到几个微秒,若需要较长时间的延时就需要执行多条指令,在较长时间的延时就需要执行多条指令,在单片机应用中一般采用多重循环方式来实单片机应用中一般采用多重循环方式来实现。现。 程序如下:org 200hdel1s:mov r3,#10;单周期,1tdel1: mov r4,#200;单周期,1tdel2: mov r5,#248;单周期,1tdel3: djnzr5,del3;双周期,2tnop;单周期,1tdjnzr4,del2;双周期,2tdjnzr3,del1;双周期,2tret;双周期,2tend【例例4.12】将片内将片内ram 40h4fh单元的单元的16个无符个无符号数按
28、从大到小的顺序排列,排序后仍存放在原号数按从大到小的顺序排列,排序后仍存放在原数据区中。数据区中。分析:这是一个数据排序问题。分析:这是一个数据排序问题。 数据排序常用的方法有数据排序常用的方法有“冒泡法冒泡法”和和“选择选择法法”。下面采用。下面采用“冒泡法冒泡法”设计程序。设计程序。 所谓所谓“冒泡法冒泡法”是指依次将两个相邻单元的是指依次将两个相邻单元的内容进行比较,如果符合由大到小的顺序,数据内容进行比较,如果符合由大到小的顺序,数据保持原状,否则相邻单元的数据互换。经过一轮保持原状,否则相邻单元的数据互换。经过一轮比较以后,这一组数中最小的数已经找出,存放比较以后,这一组数中最小的数
29、已经找出,存放于数据区的最后位置。然后再进行第二轮的比较,于数据区的最后位置。然后再进行第二轮的比较,循环结束时找出次小数。继续循环,直到原数据循环结束时找出次小数。继续循环,直到原数据区中存放的是从大到小的排序的数组。区中存放的是从大到小的排序的数组。 例4.12程序流程图 org1000hsort:mov r0,#40h;置数组首地址;置数组首地址movr7,#10h;数据块长度;数据块长度clrf0;交换标志清;交换标志清0decr7;循环次数;循环次数sort1:mov a,r0;取前数;取前数mov20h,a;把前数暂存在;把前数暂存在20h单元单元incr0mov21h,r0;后数
30、暂存于;后数暂存于21h单元单元cjnea,21h,sort2;相邻两数比较;相邻两数比较sort2:jnc sort3 ;若前数大于等于后数,转;若前数大于等于后数,转sort3mova,r0 ;若前数小于后数,两者交换;若前数小于后数,两者交换movr0,20hdecr0movr0,aincr0;恢复;恢复r0原值原值setbf0;置交换标志位为;置交换标志位为1sort3 :djnz r7,sort1;如计数器长度不为;如计数器长度不为0,则继续比较,则继续比较jb f0,sort;若判断标志位为;若判断标志位为1,则继续循环,否结束循环,则继续循环,否结束循环sjmp$end注意:对于
31、循环结构程序设计,需要注意:注意:对于循环结构程序设计,需要注意:(1)在进入循环之前,应合理设置循环初始变量。)在进入循环之前,应合理设置循环初始变量。(2)循环体只能执行有限次,如果无限执行的话,称之为)循环体只能执行有限次,如果无限执行的话,称之为“死循环死循环”,这是应当避免的。,这是应当避免的。(3)不能破坏或修改循环体,要特别注意的是避免从循环)不能破坏或修改循环体,要特别注意的是避免从循环体外直接跳转到循环体内。体外直接跳转到循环体内。(4)多重循环的嵌套是从外层向内层一层层进入,从内层)多重循环的嵌套是从外层向内层一层层进入,从内层向外层一层层退出。不要在外层循环中用跳转指令直
32、接转向外层一层层退出。不要在外层循环中用跳转指令直接转到内层循环休内。到内层循环休内。(5)循环体内可以直接转到循环体外或外层循环中,实现)循环体内可以直接转到循环体外或外层循环中,实现一个循环由多个条件控制结束的结构。一个循环由多个条件控制结束的结构。(6)对循环体的编程要仔细推敲,合理安排,对其进行优)对循环体的编程要仔细推敲,合理安排,对其进行优化时,应主要放在缩短执行时间上,其次是程序的长度。化时,应主要放在缩短执行时间上,其次是程序的长度。4.2.5 子程序调用设计子程序调用设计1子程序的结构子程序的结构 在在mcs-51指令系统中,提供了两条子指令系统中,提供了两条子程序指令程序指
33、令acall、lcall以及一条返回主以及一条返回主程序的指令程序的指令ret。 一个子程序在运行的过程中还可以调一个子程序在运行的过程中还可以调用其它的子程序,这称为子程序嵌套。用其它的子程序,这称为子程序嵌套。 2子程序设计时的注意事项子程序设计时的注意事项(1)每个子程序都应有唯一的入口,子程序的)每个子程序都应有唯一的入口,子程序的第一条指令的地址称为入口地址。该指令前必须第一条指令的地址称为入口地址。该指令前必须有标号,最好以子程序的任务定名,以便主程序有标号,最好以子程序的任务定名,以便主程序正确的调用它。正确的调用它。(2)调用子程序的指令在主程序中,子程序以)调用子程序的指令在
34、主程序中,子程序以ret指令结束,这样才能返回主程序。指令结束,这样才能返回主程序。(3)子程序调用和返回指令能自动保护和恢复)子程序调用和返回指令能自动保护和恢复断点,但对于需要保护的寄存器和内存单元的内断点,但对于需要保护的寄存器和内存单元的内容,必须在子程序开始和末尾安排保护和恢复他容,必须在子程序开始和末尾安排保护和恢复他们的指令。们的指令。(4)为使所编的子程序可以放在)为使所编的子程序可以放在64kb程序存储程序存储器的任何地方并能被主程序调用,子程序内部必器的任何地方并能被主程序调用,子程序内部必须使用相对转移指令而不使用其它转移指令,以须使用相对转移指令而不使用其它转移指令,以
35、便汇编时生成浮动代码。便汇编时生成浮动代码。3参数传递方法参数传递方法 在调用子程序时会遇到主程序和子程在调用子程序时会遇到主程序和子程序之间参数如何传递的问题。序之间参数如何传递的问题。 入口参数:入口参数:主程序调用子程序时,传主程序调用子程序时,传入子程序的参数称为入口参数。入子程序的参数称为入口参数。 出口参数:出口参数:子程序运算出的结果称为子程序运算出的结果称为出口参数。出口参数。 常用的参数传递方法有:工作寄存器常用的参数传递方法有:工作寄存器或累加器、指针寄存器、堆栈和程序段等。或累加器、指针寄存器、堆栈和程序段等。 【例例4.13】用子程序调用的方法实现用子程序调用的方法实现c=a2 + b2 ,假设,假设a、b均小于均小于10。a存于存于31h单元,单元,b存于存于32h单元单元 ,结果,结果c存于存于30h单元。单元。分析:因为分析:因为a、b均小于均小于10,则它们的平方和,则它们的平方和为单字节数,因为本题两次用到平方的运为单字节数,因为本题两次用到平方的运算,所以把求平方运算设计成子程序。算,所以把求平方运算设计成子程序。 子程序和主程序如下:子程序和主程序如下:org 1000hmain:mov sp,#60h;设置堆栈指针;设置堆栈指针mov a,31h;取;取a的值的值lcall sqr;调子程序,求;调子程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全球及中国3D头戴式显示器行业市场发展分析及前景趋势与投资发展研究报告2025-2028版
- 2025年聚碳酸酯原料双酚A项目发展计划
- 浙科技版综合实践课程设计思路与实施方案
- 和解冲剂企业ESG实践与创新战略研究报告
- 智能学习VR眼镜行业深度调研及发展战略咨询报告
- 玉米布丁企业制定与实施新质生产力战略研究报告
- 祛暑散剂企业县域市场拓展与下沉战略研究报告
- 智能口腔水牙线企业制定与实施新质生产力战略研究报告
- 2025年碳酸甲乙酯项目发展计划
- 20250508-万联证券-交通运输行业跟踪报告
- 利用热释光剂量探测器测量射线剂量
- 大病历模板-住院病历
- GB/T 602-2002化学试剂杂质测定用标准溶液的制备
- GB/T 18657.1-2002远动设备及系统第5部分:传输规约第1篇:传输帧格式
- GB/T 15608-2006中国颜色体系
- GB/T 14315-2008电力电缆导体用压接型铜、铝接线端子和连接管
- 中考语文二轮专题复习:散文和小说阅读
- 【人卫九版内分泌科】第十一章-甲状腺功能减退症课件
- 护理人员业务技术档案 模板
- 金融监管学-金融监管学课件
- 语文一年级上册:拼音9《y-w》ppt教学课件
评论
0/150
提交评论