10 汇编语言程序设计.pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10 汇编语言程序设计.ppt

汇编语言程序设计 第四章 汇编语言程序设计(2) 汇编语言源程序的另一种结构 汇编语言中的操作数 Dos 功能调用 汇编语言程序设计举例 关于源程序结构的几点说明 在代码段中,assume语句只给出了各个段寄存器和各个自定义段的关系,并没有给各个段寄存器真正赋值。 段寄存器的赋值还要由程序本身来完成,如我们用到mov ax,data mov ds,ax mov es,ax 给ds和es赋值。第一条指令,将段基址送给目的操作数,这是mov 指令的一个特殊情况 为什么只给ds,es赋值,而不给cs,ss赋值? 因为在dos环境下运行程序时,dos 的装入程序已经对cs:ip和ss:sp作了正确的初始化,而ds,es初始化为程序段前缀psp的起点,而非用户所需要的地址,所以我们要对它俩重新赋值 在上面的结构中,程序结束后返回DOS操作系统用的是: mov ah,4ch int 21H 当用户程序结束时,返回dos操作系统还有一种常用的方法: 1.首先把用户程序设置成一个过程,且类型设置为far。 2.在用户程序程序开始处 push ds xor ax,ax push ax 在子程序结束时用ret指令。这样也可以返回dos操作系统。 这实际上是用了int 20h中断指令。虽然我们从程序表面上没有看到这条指令,但是这条指令一定存在于用户程序的目标代码之前的程序段前缀区(program segment prefix)中。 原因是:每当一个用户程序的可执行文件(.exe)被DOS加载至内存中去时,它首先要为该程序建立一个一个文件头,又叫程序段前缀(PSP),占100H(256)个字节,然后把可执行的程序代码加载至PSP的后续地址上。即CS指向地点。而DS和ES初始化在PSP的起始地址。内存分配如右图。PSP给出了用户可执行文件的若干控制信息,其中前两个字节是一条中断指令INT 20H,即程序结束返回DOS指令。当用户程序结束运行时,可以通过把程序执行地址返回PSP执行这条指令而终止自己的进程。这是一种传统方法 mov al,bl inc al daa and al,0fh mov bl,al push bx or al, 30h mov dl, al mov ah,2 int 21h mov cx,0fffh again: dec cx jne again jmp goon ret start endp code ends end begin 汇编语言中的操作数 寄存器操作数,如ax,bx,bp,cx,dl等 常量 存储器操作数 常数 二进制数,以B结尾。。 十进制数,如85。 十六进制数,以H结尾。第1个数字为A-F时,前面应加0,如0F160H。 字符串:用引号括起来的1个或多个字符。如‘ERROR!’, ’a’,汇编时被翻译成对应的ASCII码45H,52H,52H,4FH,52H,21H和61H。 字符串常量 “AB”等价于4142h 常量 符号常量 PORT_VAL EQU 3 就是把端口地址3定义为一个符号PORT_VAL 数值表达式 见后面一页 表达式 表达式是常数、寄存器、标号、变量与运算符的组合。 有数字表达式和地址表达式两种。 汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。 表达式中的运算符有6类:算术、逻辑、关系、取地址、属性、杂类。 1)算术运算符—— +、-、*、/,MOD 2)逻辑运算符—— AND、OR、XOR、NOT 3)关系运算符——EQ、NE、LT、GT、LE、GE 4)取地址运算符——SEG、OFFSET 5)取值运算符——TYPE、LENGTH、SIZE 6)属性运算符——PTR 新属性 PTR 表达式 例如: F1 DW 1234H F2 DB 23H,56H,18H … MOV AL,BYTE PTR F1;AL=34H MOV BX,WORD PTR F2;BX=5623H 与LABEL伪操作指令功能类似。LABEL可以对已定义的内存单元的属性重定义,并取一个新名字。 复习LABEL伪指令功能 例子: CFB LABEL BYTE; DFW DW 4567H EFW LABEL WORD FFB DB 89H,40H … MOV AL,CFB ;al=67h MOV BX,EFW; bx=4089h

文档评论(0)

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

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

1亿VIP精品文档

相关文档