06第4章 程序设计(0.5+2+1).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06第4章程序设计(0.521)

微机原理 检测教研室 休 息 一 下 学有所成 这是你收获的季节 丰收去 Thank you! CODE SEGMENT … MOV AX, WORD PTR X ; 取X的低位字 MOV DX, WORD PTR X+2 ; 取X的高位字 SUB AX, WORD PTR Y ; 与Y的低位字相减 SBB DX, WORD PTR Y+2 ; 与Y的高位字相减,并考虑低位的借位 SBB AX, 29D ; 结果的低位与29D相减 SBB DX,0 ; 可能产生借位,再减去借位 DIV Z ; 32位无符号数(DX:AX)除以16位无符号数Z MOV A, AX ; 商在AX中,保存商 MOV B, DX ; 余数在DX中,保存余数 … CODE ENDS 定义代码段: 程序中根据各种可能出现的情况及相应的处理方法分成若干支路,运行时,根据不同情况有选择地执行相应处理程序。 例5-6 试编写程序段,实现符号函数。 当x 0时 当x = 0时 当x 0时 5.5.2 分支程序设计 相应的程序段为; SIGN: MOV AX,BUFFER ;(BUFFER)=X AND AX,AX ; 做一次“与”运算,以便把X ; 的特征反映到标志位 MOV BX, 0 ; 预置X=0的标志0到BX JE NEXT ; 若X确实为0,则转NEXT JNS PLUS ; X为正数,则转PLUS MOV BX, -1 ; X为负数,则-1送BX JMP NEXT PLUS: MOV BX,1 NEXT: … … 例5-7 在数据段中定义了256个子程序的入口地址(段地址:偏移地址),试根据AL中的值,决定调用256个子程序中的哪一个。 分析:每个子程序的入口地址占用4个字节,需将AL的值乘以4,再加上入口地址表首的偏移地址,即可得到某子程序入口地址在表中的偏移地址,将该地址送入BX,利用段间间接调用指令实现子程序调用。这种处理方法,类似于第9章中将要介绍的中断向量表的处理。 BX=入口地址表首偏移地址+AL*4 DATA SEGMENT TABADD DD SUB0 ; 0#子程序入口地址 DD SUB1 ; 1#子程序入口地址 …… DD SUB255 ; 255#子程序入口地址 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) STACK ENDS CODE1 SEGMENT ;代码段CODE1实现查表转移的程序段 ASSUME CS: CODE1,DS:DATA,SS:STACK …… XOR AH, AH ; AH清0 MOV CL, 2 SHL AX, CL ; AX左移2次相当于乘以4 MOV BX, OFFSET TABADD ; 取

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档