师彪讲授:第3章微机原理汇编与接口技术.ppt

师彪讲授:第3章微机原理汇编与接口技术.ppt

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

补充实例 【例2】 MOV AX, DATA1 MUL DATA2 MOV DATA3,AX MOV DATA3+2,DX 注: 字乘 功能: 【例1】 在BUF1、BUF2、BUF3字节 类型变量中,分别存有 8 位 带符号数a、b、c,编程实现 (a×b +c) /a ) 。 例3.8从键盘上键入0~9中任一自然数N,将2的N次方值在显示器的下一行显示出来。 求一个数的N次方值可以用查表法实现,也可以用乘法运算实现。用查表法求一个数的N次方值与例3.5类似,此处使用乘法运算来编制该程序。由于乘法运算都是乘2操作,故用逻辑左移实现。设其初值为1,键入的N值就是对该初值移位的位数。求得的徝是一个二进制数,为了输出还要将二进制数转换为十进制数的ASCII码。其最大值是2的9次方,29=512,最大值的ASCII码占3个单元,再加上回车、换行和?$?,所以输出数据区OBUF最多6个单元。程序如下: OBUF DB 6 DUP(0) MOV AH,1 INT 21H AND AL,0FH ;将?N?转换为N MOV CL,AL MOV AX,1 SHL AX,CL MOV BX,5 MOV OBUF[BX],?$? MOV CX,10 ;转换为十进制数的ASCII码 AGAIN: MOV DX,0 DIV CX OR DL,30H DEC BX MOV [BX],DL AND AX,AX JNZ AGAIN SUB BX,2 MOV WORD PTR[BX],0A0DH ;存入回车换行 MOV DX,BX ADD DX,OFFSET OBUF MOV AH,9 INT 21H 例3.9 从键盘上键入2位十六进制数将其拼合成一个字节存入字节变量SB中。 IBUF DB 3,0,3 DUP(0) SB DB 0 MOV DX, OFFSET IBUF ;键入2位十六进制数 MOV AH, 10 INT 21H MOV AX, WORD PTR IBUF+2 ;键入字符送AX SUB AX, 3030H ;字符变为十六进制数 CMP AL,0AH JB LNSUB7 SUB AL,7 LNSUB7: CMP AH,0AH JB LNSUB7 SUB AH,7 HNSUB7: MOV CL, 4 ;将AX中的数拼合成一个字节 SHL AL ,CL OR AL, AH MOV SB,AL PUSH AX PUSH BX 保护现场 PUSH CX ﹕ 子程序工作部分 POP CX POP BX 恢复现场(注:先进后出) POP AX RET 如:某子程序要用到AX ﹑BX ﹑CX,可用进栈﹑出栈实现保护与恢复现场. (1)子程序中保护(一般用此法)→在子程序开始,将子程序用到的所有寄存器的内容保护起来,在返回之前恢复这些寄存器的内容. 如:调用DEF子程序,主、子程序中均要使用AX,可用以下方法保护: PUSH AX ;保护现场 CALL DEF POP AX ;恢复现场 子程序结构: 保护现场→取入口参数进行加工处理 →存结果至指定单元(作出口准备)→恢复现场→返回 (2)在主程序中保护与恢复→在调用前保护某些寄存器 的内容,返回后再恢复. 格式:CALL 子程序名 功能:将返回地址进栈,将程序控制转移到子程序 子程序名有类型属性:NEAR→主﹑子在同一段内,FAR→主﹑子在不同段.段内只改变IP,段间改变CS:IP,具体操作: 段内调用:IP→[SP-2],SP-2→SP, O

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档