- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第5讲 汇编语言程序设计
第 5 讲汇编语言程序设计 主要内容: 概述 顺序程序设计 分支程序设计 循环程序设计 子程序程序设计 综合举例 5.1 概述 5.1 概述 5.1 概述 5.2 顺序程序设计 例题:编写一程序计算以下表达式: Z=(3X+Y-5)/2 设X、Y的值存放在字变量VARX、VARY中,结果存放在VARZ中。 例题:利用学号查学生的数学成绩表。首先在数据段中建立一个成绩表TABLE,在表中按学号从小到大的顺序存放分数。要查的学号存放在变量NUM中,查表的结果放在变量MATH中。 TITLE TABEL LOOK-UPDATA SEGMENTTABLE DB 81,78,90,64,85,76,93,82,57,80 DB 73,62,87,77,74,86,95,91,82,71NUM DB 8MATH DB ?DATA EDNSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABLE ;BX指向表首址 XOR AH,AH MOV AL,NUM DEC AL ADD BX,AX MOV AL,[BX] ;查到成绩 MOV MATH,AL ;存结果 MOV AH,4CH INT 21HCOSEG ENDS END START 5.3 分支程序设计 5.3 分支程序设计 5.3 分支程序设计 5.3 分支程序设计 5.3 分支程序设计 5.3 分支程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.4 循环程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5 子程序设计 5.5.4 子程序的嵌套与递归调用 1) 子程序的嵌套调用 2) 子程序的递归调用 子程序递归调用是指一个子程序直接或间接地调用自己。 对于一个具有FAR属性的子程序来说,定义的子程序和调用程序不在同一个逻辑段内: 2) 子程序的调用与返回 子程序的调用 直接调用: 在CALL指令中直接使用子程序名作为目的 操作数。 间接调用: 将子程序的入口地址存放在内存单元中或 一个16位的通用寄存器中,在CALL指令中 用变址或寄存器寻址的方式来表示子程序的 入口地址。 无论采用哪一种调用方法,在执行CALL指令时,CS:IP总是指向CALL指令的下一条指令的起始地址。这个地址称为返回地址。 它是子程序中执行RET指令时,返回到调用程序的地址。 在执行CALL指令时,CPU首先将返回地址压入堆栈,然后再转移到子程序的入口地址,进入子程序。 段内直接调用: 段内间接调用: 段间直接调用: 段间间接调用: 子程序的返回 在执行返回指令时.首先从栈顶弹出一个或两个字的内容,将其送入IP或IP、CS。 5.5 子程序设计 5.5.2 子程序的设计要求 子程序应该是一个结构清晰、功能明确、独立性好、通用性强的程序段。只有这样,它才可以在程序中方便地被调用,达到减少重复编程、提高编程效率的目的。 对于己编写好的子程序.可以将它们存放在称为子程序库的文件中.以供其他程序调用。 1) 具有一定的通用性 2) 选用适当的方法实现主程序与子程序间的参数传递 3) 注意保存信息 4) 正确使用堆栈 5) 清晰的子程序文本 下面是一个多精度数相减的子程序示例 5.5.3 子程序与主程序间的参数传递和设计举例 例题: 将一个给定的二进制数按位转换成它的ASCII码串,并将转换结果存放到指定的存
文档评论(0)