下载此文档

第五章 汇编语言程序设计.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
第五章  汇编语言程序设计
 
  难点和重点
1.  变量通过伪指令DB、DW、DD、DQ、DT来定义
DB定义的是字节变量,DW定义的是字变量;DD定义的是双字变量,DQ定义的是长字变量;DT定义的是一个十字节变量。当变量为DW和DD类型时,才可以作为地址表达式,此时应遵循以下规则:
(l)当用DW定义地址表达式时,地址表达式中的变量名称表示该变量的第一个存储单元的偏移地址。
(2)当用DD定义地址表达式时,低位字用于预置偏移地址,高位字用于预置段地址。
(3)地址表达式中的变量或标号可与常数值相加减。对于变量来说运算结果的类型不变;对标号来说,运算结果仍表示原标号所在段中的偏移地址。
(4)变量或标号不能与变量或标号相加,但可相减,结果是没有属性的纯数值。
2.源程序模块
一个源程序模块能允许包括多个代码段和其它段,也允许多次使用ASSUME语句,重新约定段寄存器和段的关系。但 ASSUME语句并不意味着汇编后这些段地址已经装入相应的段寄存器中了,除了CS寄存器以外,其它各个段寄存器的实际值,还要用MOV指令来赋值,例如:

MYCODE   SEGMENT
ASSUME CS:MYCODE,DS:MYDATA,ES:MYEXTRA,SS:MYSTACK
START:MOV  AX , MYDATA
MOV  DS , AX
MOV  AX , MYEXTRA
MOV  ES , AX
MOV  AX , MYSTACK
MOV  SS , AX

MYCODE  ENDS
然而,也不能只用赋值语句而将ASSUME语句省略,这样汇编程序就找不到所定义的各个段。
 
 
3.跳转表法
当程序是CASE结构,即需引出多个分支时,最好利用跳转表法。其主要设计思想是:首先将n个选择项所对应的n个分支程序的标号存放在一个数据表(即跳转表)中,然后判别程序是否满足第一个条件,若满足就根据分支程序标号在跳转表中存放的地址将程序转入相应的分支;否则继续判别下个条件是否满足,……。下面程序主要实现一组选择项(5个)存于AL寄存器中,要根据AL中为1的位将程序分别转移到相应的分支:
BRANCH  SEGMT
BRANTAB  DW  ROUTINE1
DW  ROUTINE2
DW  ROUTINE3
DW  ROUTINE4
DW ROUTINE5
BRANCH  ENDS
ROUTINE SEGMENT
MAIN    PROC   FAR
ASSUME  CS:ROUTINE,DS:BRANCH
START:     PUSH  DS
SUB   BX , BX
PUSH  BX
MOV   BX , BRANCH
MOV   DS , BX
CMP   AL , 0
JE     DONE
LEA   BX , BRANCH
CTINUE:    SHR   AL , l
JNC    NOTYET
JMP    WORD   PTR [BX]
NOTYET:   ADD   BX , TYPE  BRANCH
JMP  CTINUE
DONE:   
ROUTINEI:
ROUTINEZ:

第五章 汇编语言程序设计 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人bb21547
  • 文件大小38 KB
  • 时间2021-02-28