西安理工大学《微机原理及应用A 》Assembly Language Example.pptVIP

西安理工大学《微机原理及应用A 》Assembly Language Example.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Example 1: Euclid’s Algorithm 1. 算法分析与设计 采用欧几里德算法求两个数的最大公约数的伪代码: while n0 do { r=m mod n; m=n; n=r;} gcd=m ; 2.算法的伪代码的转换 (1). 采用 cmp 和条件转移指令构造条件循环。 (2). 采用eax,ebx寄存器存放 m 和 n 。 (3). m mod n 的运算采用 div 除法指令代替。 Example: Euclid’s Algorithm data segment ;define data segment m dw 255*255 n dw 51 gcd dw ? data ends sseg segment stack ; stack segment mystack dw 200 dup(?) top equ $-mystack sseg ends program segment ;define code segment assume cs:program,ds:data,ss:sseg main proc far start: mov ax,sseg ;set up my stack segment mov ss,ax mov sp,top push ds ;save old data segment xor ax,ax ; put zero in AX push ax ; save zero on stack,return DOS mov ax,data ;set up my data segment mov ds,ax mov ax,m ;main part of program mov bx,n again: cmp bx,0 jz find ;if bx=0 then goto find xor dx,dx ;dx=0 div bx ; put Remainder in dx mov ax,bx mov bx,dx jmp again find: mov gcd,ax ret ;return to DOS main endp ;end of main part of program. program ends ;end of segment end start ;end of assembly 例2:整数的输入/输出 数据的输入/输出需要依赖于操作系统的功能调用!而DOS只提供字符、字符串的输入/输出,没有提供数制转换的功能。因此,整数输入/输出的关键就是数制转换算法。 字符串输入的功能调用 1. 2 数据输入时的数制转换算法 1. 2 数据输入时的数制转换算法 1. 2 数据输入时的数制转换算法 1. 2 数据输入时的数制转换算法 Call Read 子程序时的堆栈变化情况 * 汇编语言程序设计习题课 In C: int gcd(int m, int n) { int r; while (n != 0) { r=m % n; m = n; n = r; } return m; } Remainder operation Two integer parameters Data transfer One local variable 例1:求m,n两个数的最大公约数,并存入gcd 单元。 Non-zero test begin eax=m ebx=n ebx=0 gcd=eax end true false edx=0 div ebx eax=ebx ebx=edx While loop 合理的分配寄存器 1. 整数的输入 DOS功能调用 INT 21H 功能号: AH=0AH 入口参数:DS:DX=缓冲区首地址

文档评论(0)

***** + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档