- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 汇编程序设计 教学内容 PC汇编指令集中部分指令; 顺序、分支、循环程序设计; 子程序设计 教学目的 复习、巩固寻址方式、汇编完整框架等内容,培养良好的汇编编程习惯; 学会常用汇编程序设计方法: 数的简单处理(存储、加减、移位); 查表(平方表、立方表); 理解子程序调用、返回时堆栈的变化。 第四讲 汇编程序设计 提示 程序设计三部曲: 需求分析,明确目标; 制订设计方案:编程思路、算法,所用到的指令; 具体编程、调试、修改:指令的功能、用法; 指令的功能、用法可“现学现用”,平时只需作大致的了解、记忆; 编程过程中需时刻关注: 内中存数据区各变量的存放格式; 内存中数据、堆栈随程序运行的变化情况。 积极自学,读懂课本实例,从中领悟编程思路; 多做调试;勇于交流。 第四讲 汇编程序设计 例:编写完整的源程序,实现下面功能: 不用乘法指令实现A×19→RESULT (已知A为字节类型,RESULT为字类型) 解:19A=16A+2A+A=24A+21A+A 所以,可用逻辑/算术左移和加法实现上述功能。 stck segment stack stack dw 32 DUP(?) stck ends data segment A DB ? ; 定义被乘数变量 RESULT DW ? ; 定义积变量 data ends code segment begin proc far 第四讲 汇编程序设计 例:编写完整的源程序,实现下面功能: 不用乘法指令实现A×19→RESULT (已知A为字节类型,RESULT为字类型) 解:19A=16A+2A+A=24A+21A+A 所以,可用逻辑/算术左移和加法实现上述功能。 code segment begin proc far assume ss:stck,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax MOV A,92H ; 初始化变量A MOV AL,A MOV AH,0 ; A ? AX 要求:程序中要有必要的注释 MOV BX,AX SHL BX,4 ; 16A ? BX, SAL MOV CX,AX SHL CX,1 ; 2A ? CX,SAL ADD BX,CX ; 16A+2A ? BXC ADC BX,AX ; BX+A+C ? BX, ADD MOV RESULT,BX ; 和? RERULT ret begin endp code ends end begin 第四讲 汇编程序设计 例:编写完整的源程序,实现下面功能: 不用乘法指令实现A×19→RESULT (已知A为字节类型,RESULT为字类型) 解:19A=16A+2A+A=24A+21A+A 所以,可用逻辑/算术左移和加法实现上述功能。 思考:为何不将A送入8位通用寄存器(AH/AL/BH/BL等)直接 进行左移,而是对AX,BX,CX等16位Regs左移? 第四讲 汇编程序设计 复习 变量内存空间分配 例:某个数据段为: DATA SEGMENT D1 DB 0,22 D2 DB 0,22H D3 DB ‘123’ D4 DW 120,-100 D5 DW 120H DATA ENDS 字节数据:一单元存放一个数; 字数据:用二个连续单元存放, “低对低,高对高”,并且2 个单元中的低地址作为字数据的地址; 字符串:从低地址开始,以ASCII码顺序存放。 注意数后面加和不加‘H’的区别:加:表示十六进制数或BCD数,直接存放;不加:表十进制数,自动转成十六进制再存放。 4.1 顺序程序设计 一、整数乘除法指令及十进制调整指令 1. 乘法指令 MUL——无符号乘法 IMUL——有符号乘法 2. 除法指令 DIV——无符号除法 IDIV——有符号除法 3. 十进制调整指令 DAA——加法的压缩BDC码调整指令 AAA ——加法的非压缩BDC码调整指令 DAS ——减法的压缩BDC码调整指令 AAS ——减法的非压缩BDC码调整指令 AAM ——乘法的非压缩BDC码调整指令 AAD ——除法的非压缩BDC码调整指令 提示:重
文档评论(0)