微机原理第3章分解.pptVIP

  • 38
  • 0
  • 约7千字
  • 约 87页
  • 2017-04-22 发布于湖北
  • 举报
微机原理与接口技术;第三章 汇编语言程序设计;.ASM;用户编写程序,程序在计算机中运行,计算机的控制由操作系统交给用户程序,运行用户程序,当用户程序运行结束后,应再将控制权交回操作系统,所以,在程序中应该有返回DOS的指令。在计算机中,返回DOS的指令是操作系统中的一个子程序,用户使用时应调用这个子程序。;每当一个用户的可执行文件.EXE装入内存后,存储器的分配情况如图:;系统占用;如何使用户程序执行完后返回来执行这条指令?;返回操作系统的另一个办法是用系统调用中断指令: INT 21H, 在用户程序结束时,用下面两条指令: MOV AH, 4CH INT 21H 这两条指令经常用在短的程序段中,即用户程序并不是一个完整的汇编程序,而只是由一些指令组成的、没有堆栈区或数据区的程序段。;第一节 伪指令;伪指令:伪指令不是处理器运行的指令,而是程序员给汇编编译程序下达的命令。是在编译源程序期间由汇编编译程序执行的命令。;一、段定义;段名必须是合法是标识符。;每16个地址为一段(PARA),每段的起始地址为二进制: **** **** **** **** 0000 16进制:****0H ;每2个地址为一个字(WORD),每个字的起始地址为偶数; 最基本的类型是字节(BYTE),字节只包含一个地址,可以是内存的任何空间。;BYTE: 表示本段起始单元可以从任一地址开始; WORD: 表示本段起始单元从一个偶地址开始; PARA: 表示本段起始单元从一个段的边界开始(默认); PAGE: 表示本段起始单元从一个页的边界开始。;组合类型;COMMON: 表示产生一个覆盖段。连接时,把本段与其他也用COMMON说明的同名段置成相同的起始地址,重叠在一起,共享相同的存储区,其段长度由最长的段确定。;MEMORY: 表示本段在存储器中应定位在所有其他段的最高地址。;例如:定义堆栈段如下: ST SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) ST ENDS;连接两个汇编语言目标程序时,它们的数据段同名,组合类型为PUBLIC,定位类型为PARA。连接后第一个目标程序的数据段的起始物理地址是01010H,长度为17AH,则第二个目标程序数据段的起始物理地址为多少?;现有汇编目标程序A和B,它们的数据段类别名相同??组合类型皆为COMMON,若A程序数据段中有字符串‘ABC’,B程序数据段中有字符‘DEF’,则执行连接操作 LINK A+B 后,产生目标程序的数据段中偏移地址为0000H单元的内容是什么?;二、过程定义;过程名1 PROC FAR …… RET 过程名1 ENDP;例:延时100ms的子程序,编程如下:;三、段寻址;;四、结束语句 END;五、ORG;六、完整结构; PUSH DS XOR AX, AX PUSH AX MOV AX, DATA MOV DS, AX;第二节 数据定义;一、常量、变量及标识符;每个变量都有三个属性;DATA SETMENT X DB 5, 4 Y DW 40H Z DD 2030H DATA ENDS;标识符:给指令或某一存储单元地址所起的名字。 标识符由下列字符组成: 字母: A~Z, a~z; 数字: 0~9; 特殊字符: ? . @ _ $;标号:代码段中某一条指令的地址。;二、数据定义伪操作;DD: 定义双字,其后每个操作数占4个字节;;DATA1 DB 100 DUP(‘AB’);三、等值伪操作;DATA SEGMENT A DW 3 B DW 4 L EQU B-A DATA ENDS;DATA SEGMENT A DW 3, 7 B DW 14 L EQU B X DW B Y EQU B-A DATA ENDS;第三节 汇编语言运算符;汇编语言运算符:是编译程序在编译时计算的,与运算指令不同,指令是在程序运行时计算的。 一、算术运算符 +,-,*, /

文档评论(0)

1亿VIP精品文档

相关文档