《师彪讲授第3章微机原理_汇编与接口技术》-课件设计(公开).pptVIP

  • 5
  • 0
  • 约2.31万字
  • 约 102页
  • 2019-01-09 发布于广西
  • 举报

《师彪讲授第3章微机原理_汇编与接口技术》-课件设计(公开).ppt

补充实例 【例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)

1亿VIP精品文档

相关文档