第4章 汇编语言程序设计68599.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1章汇编语言基础知识 4.3 程序基本结构及其程序设计 顺序结构 分支结构 循环结构 子程序程序设计中最基本的结构是如图所示的顺序结构,它只有一个起始框、一个结束框和一至多个执行模块。具有顺序结构的程序叫做简单程序。 分支结构 许多实际问题很复杂,有时需要根据不同条件进行不同的处理,此时就需要用分支程序设计。 codesegment mainproc farassume cs:code,ds:datapush dsxor ax,axpush axmov ax,datamov ds,ax REPEAT: MOV AX,0600H ;清屏MOV CX,0MOV DX,184FHMOV BH,07INT 10H CURSOR: MOV AH,02 ;设置光标MOV BH,0MOV DX,0400HINT 10HLEA DX,MSG1 ;显示菜单MOV AH,9INT 21HLEA DX,MSG2 ;显示选择提示MOV AH,9INT 21H RDKB: MOV AH,1 ;等待输入选择号INT 21HCMP AL,31H ;选择合法性检查JB BEEP ;若非法则转移CMP AL,35HJA BEEPAND AL,0FH;ASCII码转换为非压缩BCD码XOR AH,AHDEC AX ;得到索引值ADD AX,AX ;i项位移量LEA BX,JMP_TAB ;装入表首址ADD BX,AX ;得到表项地址JMP [BX] ;按表项地址转移 BEEP: MOV AH,14 ;响铃警告MOV AL,7MOV BH,0INT 10HJMP SHORT RDKB ;转重新选择 CREATE: MOV AH,2;建立文件子功能MOV DL,CINT 21HMOV AH,0INT 16HJMP REPEAT ;返回菜单 UPDATE: NOP ;修改文件子功能JMP REPEAT ;返回菜单 DELETE: NOP ;删除文件子功能JMP REPEAT ;返回菜单 PRINT: NOP ;显示文件子功能JMP REPEAT ;返回菜单 QUIT: ret ;返回操作系统 mainendp codeendsendmain 2.循环程序设计无论使用哪种循环结构,循环程序一般应包括以下几部分: (1) 循环初始化。 (2) 循环体。 (3) 循环控制部分。 (4)修改参数。 特别要注意循环入口和循环次数的正确设置、地址指针及循环控制条件的修改等,否则会得不到期望的结果。 宏定义 宏指令在使用之前要先定义. ●定义格式:宏指令名MACRO 形式参数[,形式参数]宏体ENDM 例如: 某一程序中要多次使用DOS9号功能调用:┇LEA DX,BUF1MOV AH,9INT 21H┇LAE DX,IN_BUFMOV AH,9INT 21H 宏定义 他们之间的差别仅在于输出缓冲区的首址不一样.如果讲该首址定义成形参,就可将其写成宏定义:WRITE MACRO ALEA DX,AMOV AH,9INT 21HENDM 说明: (1)宏名字可以与其他变量,标号,保留字同名,汇编程序在处理时宏名字优先级最高.利用这一特点,程序员可以设计新的指令系统. 宏定义 (2) 形参可有可无个数不限,但总字符长度不超过132个,个参数之间用逗号隔开; (3) ENDM和MACRO必须成对出现; (4) 宏指令必须先定义后调用,因为它是在汇编期间处理的. 宏指令与子程序的比较 不同点: (1)处理时间不同; (2)处理方式不同; (3)目标程序的长度不同; (4)执行速度不同; (5)参数传递方式不同; 多分支结构程序设计 可以用跳跃表法实现CASE结构,实现的关键是先要构成跳转表,然后用条件间接转移指令实现跳转。 ◎设计跳转表 JMP_TAB DW 建立文件分支入口标号DW 修改文件分支入口标号DW 删除文件分支入口标号DW 显示文件分支入口标号DW 退出分支入口标号 如果主控程序及5个子功能分别在不同的段或模块中,只需要把数据定义语句助记符的DW换成DD即可。 ◎用无条件间接转移指令实现CASE转移 若跳转表是用DW定义的,则用段内间接转移指令。 若是用DD定义的,则用段间间接转移指令。 段内间接转移的几种格式: ???JMP JMP_TAB[SI];SI中为位移量 ???LEA BX,JMP_TAB JMP WORD PTR [BX][SI] ;SI中为位移量 ???LEA BX,JMP_TAB ADD BX,位移量 JMP WORD PTR [BX]说明:位移量是跳转表中所选项与表基址的距离。我们把所有

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档