微机原理与应用-ch7.pptVIP

  • 7
  • 0
  • 约9.42千字
  • 约 45页
  • 2017-06-05 发布于湖北
  • 举报
第七章 汇编语言程序设计的基本方法和技巧 7.1 概述 7.2 伪指令和宏指令 7.3 8086汇编语言程序设计的基本语法 7.4 汇编语言程序设计的基本方法和技巧 7.7 IBM-PC-DOS系统的功能调用 7.2 伪指令和宏指令 1. 符号定义伪指令 等值语句 符号名 EQU 表达式 功能:为一个表达式赋予一个符号名 表达式类型:常数或数值,地址,变量、标号、寄存器、指令助记符 e.g. COUNT EQU 5 NUM EQU COUNT+5 e.g. ADDR EQU DS:[DI+7] e.g. LABLE EQU START+BET CNT EQU BX CBD EQU SUB 注:EQU定义的符号名不能被重新定义 等号语句 符号名 = 表达式 e.g. NUM = 6 … NUM = NUM+2 注:与EQU区别在于符号名可以重新定义 e.g. 利用DW伪指令可存放偏移地址,DD伪指令可存放偏移地址和段地址 XX DW OFFSETX LIST DD LABEL OFFSETX为XX在其段内的偏移地址 LABEL为双字,一字为偏移地址,一字为段地址 e.g. 数据复制 D1 DB 3 DUP(11, ?) D2 DW 2 DUP(4, ?) D3 DB 2 DUP(‘AB’, 2, DUP(8)) 5. 过程(子程序)定义伪指令 注意: PROC与ENDP必须成对出现; NEAR时表示段内调用,FAR表示段间调用,未指定时,认为是NEAR 一个过程中可以有一个以上的返回指令RET,它们不必放在过程的最后。 6. 模块定义伪指令 注意: NAME和END成对出现 程序开始可以用NAME或TITLE为模块取名字 标号指示程序开始执行的起始地址,如果多个程序模块相连接,则只有主程序要使用标号,其他子程序模块则只用END而不必指定标号。 7. 定位伪指令 功能:指定其后的程序段或数据块的起始地址的偏移量。数值表达式的值是一个无符号数。 二、宏指令语句 1. 宏定义和宏名字(宏指令) 宏名字 MACRO [形式参数1,形式参数2,…] … ENDM 宏定义:为需要多次重复书写的程序段确立(定义)一个名字。 宏调用:经过宏定义的程序段在此后重复书写时用宏名字代替。 宏展开:汇编时,汇编程序遇到宏名字将其对应的宏体展开。 e.g. 实现两个八位二进制数相乘,结果送BX所指单元 注意: 宏调用前必须进行宏定义 宏调用与子程序调用完全不同 7.3 8086汇编语言程序设计的基本语法 助记符由指令系统规定。 定义符由汇编程序规定。 都称为关键字或保留字,不能用作标号、名字、变量名。 2. 变量 代表存放在某存储单元的数据,若变量在名字中出现,称为对变量的定义,就是给变量分配存储单元,且对这个存储单元赋一个符号名——变量名。同时将这些存储单元预置初值,可以通过DB、DW、DD等对变量定义。 ② MOD:除法取余 SHL/SHR:逻辑左/右移,最右/左边以0补,当移位次数≧16时,结果恒为0 (3) 关系运算符 EQ、NE、LT、LE、GT、GE 关系运算符连接两数(这两个数必须同时是数字或同一段内的两个地址)组成一个判定式,若判定式正确(为真),运算结果为0FFFFH,若为假,则运算结果为0000H 7.4 汇编语言程序设计的基本方法和技巧 汇编语言的程序设计步骤如下: 1.建立数学模型; 2.选择算法; 3.绘制流程图; 4.分配存储空间和工作单元; 5.根据流程图编制程序; 6.上机调试程序。 1. 顺序程序设计 例 从标号为ADD-BUF的存储单元开始连续存放着两个单字节数,将两数相加,结果送到SUM-BUF存储单元中(不考虑进位)。 2. 分支程序设计 例 比较两个一字节无符号数X1和X2的大小,把大数存入MAX单元。 3. 循环程序设计 例 从XX单元开始的10个连续单元中存放有10个无符号数,从中找出最大者送入YY单元。 分析:根据题意,把第一个数先送入AL,将AL中的数与后面的9个数逐个比较,如果AL中的数较小,则两数交换位置,如果AL中的数大于或等于相比较的数,则两数位置不变,在比较过程中,AL中始终保持较大的数,比较9次,则最大者必在AL中,最后把AL中的数送入YY单元。 7.7 IBM-PC-DOS系统的功能调用 一、调用方法及注意问题 PC-DOS提供了87个子程序供用户调用,编号为0~57H(

文档评论(0)

1亿VIP精品文档

相关文档