汇编语言程序设计教程 教学课件 作者 王庆生 6.ppt

汇编语言程序设计教程 教学课件 作者 王庆生 6.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.1 分支程序设计 6.1.1 分支程序结构 6.1.2 单分支程序 6.1.3 复合分支程序 6.1.4 多分支程序 例6.1 双字长数存放在DX和AX寄存器中(高位在DX),求该数的绝对值(用16位指令)。 算法分析: 1. 双字长数高字在DX中,低字在AX中; 2. 判该数的正负,为正数(最高位为0),该数不处理;为负数,就对该数求补(即反码加1)。 code segment assume cs:code start: test dx,8000h ;测试数的正负 jz exit ;不为负数就退出 not ax not dx add ax,1 adc dx,0 exit: mov ah, 4ch int 21h code ends end start 例6.2 从键盘输入一位十六进制数,并将其转换为十进制数输出显示。 算法分析: 从键盘输入一个十六进制数,有以下四种情况: 1. 为数字0~9(ASCII码30~39H),无需处理,直接输出; 2. 为大写字母A~F(ASCII码41~46H),先输出31H,再输出该数ASCII码-11H; 3. 为小写字母a~f(ASCII码61~66H),先输出31H,再输出该数ASCII码-31H; 4. 该数不为0~9、A~F、a~f,是非法字符,应退出程序或输出错误信息。 code segment assume cs:code start: mov ah,1 ;键盘输入 int 21h cmp al,30h jl exit ;非法输入 cmp al,39h jle dig ;输入是数字0~9 cmp al,41h jl exit ;非法输入 cmp al,46h jle print ;输入是大写A~F cmp al,61h jl exit ;非法输入 cmp al,66h jg exit ;非法输入 sub al,31h jmp out1 ;输入是小写a~f print:sub al,11h out1:mov dl,31h ;输出字符1 mov ah,2 push ax ;暂存AX int 21h ;int指令改写了AX pop ax ;恢复AX dig: mov dl,al ;输出个位 mov ah,2 int 21h exit: mov ah,4ch ;程序终止并退出 int 21h code ends end start 6.1.4 多分支程序 如果在分支结构中有超过两个以上的多个可供选择的分支,这就是多分支结构。 如果对多分支的条件逐个查询以确定是哪一个分支,只会增加代码和时间,为了尽快进入某个分支,可以采用分支向量表法。 例6.3 根据键盘输入的一位数字(1~4),使程序转移到4个不同的分支中去,以显示键盘输入的数字。 算法分析:从键盘输入一个数1~4, 1. 建立一个分支向量表branch ,集中存放四个分支的偏移地址; 2. 每个偏移地址位16位,占用2个单元; 3. 四个分支的偏移地址在转移地址表的地址是: 转移地址表首址+输入数字(0~3)×2; 4. 用间接寻址方式转向对应分支。 code segment assume cs:code,ds:code start:

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档