微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part1_第1页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part1_第2页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part1_第3页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part1_第4页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part1_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术第4章汇编语言程序设计目录4.1汇编语言基础4.2顺序程序设计4.3分支程序设计4.4循环程序设计4.5DOS系统功能调用4.6子程序设计4.7字符串处理34.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义4汇编语言的语句组成指令性语句伪指令语句可生成机器码

由CPU执行不可生成机器码

由编译器解释执行4.1汇编语言基础汇编语言的语句组成[标号:][指令前缀]助记符操作数[;注释]指令性语句的符号地址必须以冒号(:)结尾。CYCLE:CMPSUM,100;SUM单元与100比较

…….JMPCYCLE通常用于做跳转和循环指令的目标地址。指令性语句4.1汇编语言基础汇编语言的语句组成[标号:][指令前缀]助记符操作数[;注释]指令性语句指出指令的操作类型(指令前缀见4.7节)有对应的机器码是语句的核心部分,不能省略CYCLE:CMP

SUM,100;SUM单元与100比较

…….JMPCYCLECMP是比较指令的助记符4.1汇编语言基础汇编语言的语句组成[标号:][指令前缀]助记符操作数[;注释]指令性语句可以是常数、变量、表达式、寄存器名或地址等不是每条指令所必需的操作数之间用逗号隔开;与助记符之间用空格隔开DAA、CWD、XLATCYCLE:CMPSUM,100

;SUM单元与100比较

…….JMPCYCLE操作数SUM是一个变量,属于直接寻址4.1汇编语言基础汇编语言的语句组成[标号:][指令前缀]助记符操作数[;注释]指令性语句用做语句或程序段的说明编译时不形成任何目标码以“;”开头CYCLE:CMPSUM,100;SUM单元与100比较

…….JMPCYCLE4.1汇编语言基础汇编语言的语句组成伪指令语句[符号名]伪指令助记符操作数[;注释]用符号地址表示作为变量名、段名、过程名等不加“:”SUM

DB04.1汇编语言基础汇编语言的语句组成伪指令语句[符号名]伪指令助记符操作数[;注释]是汇编程序MASM规定的符号SUMDB

0DB是定义字节变量的伪指令助记符4.1汇编语言基础汇编语言的语句组成伪指令语句[符号名]伪指令助记符操作数[;注释]可以是常数、变量、字符串或表达式等操作数个数由具体的伪指令要求操作数之间用逗号隔开SUMDB0DATADB(2*4),(9/3),‘a’4.1汇编语言基础汇编语言的语句组成122024/8/30双字变量相加的源程序可执行程序反汇编结果指令性语句——CPU执行伪指令语句——汇编器执行4.1汇编语言基础汇编语言的语句组成

标识符可以包含1~31个字符对大小写不敏感第一个字符必须是字母、下划线、@、?或者$,后继字符可以是数字。不能与汇编器的保留字相同。VAR1 count $sum _mainMIN

_4567标号和符号名都称为标识符所以字母打头的十六进制数前要加0MOVAL,0ACH

0ACH是十六进制数

SUMsum

Sum

都是相同的DAA 1xyz END x-1 ASSUME

4.1汇编语言基础144.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义15算术逻辑移位指令移位指令数据项出现在汇编源程序中的固定值,即其在运行期间不会变化

按基数不同,有二进制(B)、八进制(O或Q)、十进制(D)、十六进制数(H)等形式00101100B 1234D1234 255O56H 0BA12H数值常数

常数4.1汇编语言基础16算术逻辑移位指令移位指令数据项出现在汇编源程序中的固定值,即其在运行期间不会变化

常数单引号括起来的一串字符,编译为各个字符的ASCII码。字符串常数在初始化存储器时才可以使用多于两个字符的字符串常数。DATA5DB '1234'其他情况下,一般使用单个或两个字符组成的常量MOVAL,‘A’↔MOVAL,41HDATA5DB 31H,32H,33H,34HMOVAX,‘AB’↔MOVAX,4142H4.1汇编语言基础17算术逻辑移位指令移位指令数据项

变量存放在存储单元内的值,以变量名的形式出现在程序中,可以在程序运行时修改。一个变量只能定义一次三个属性段地址偏移地址类型变量中每个元素所包含的字节数BYTE、WORD、DWORDSUM

DB0MOVAL,SUM4.1汇编语言基础18算术逻辑移位指令移位指令数据项

标号是可执行指令语句的符号地址。三个属性段地址偏移地址类型在转移指令中标号可以转移的距离(距离属性)NEAR、FARCYCLE:CMPSUM,100…….JMP

CYCLE4.1汇编语言基础194.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义20算术逻辑移位指令移位指令表达式

算术运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。主要有:+、-、*、/、MOD操作数一般都是数字操作数,结果也是数字的MOVAL,8MOD3;AL=2MOVBL,10+12;BL=224.1汇编语言基础21算术逻辑移位指令移位指令表达式

算术运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。SUM+2变量名标号20H30H40HSUM+2SUM对于“MOVAL,SUM+2”AL=40H,而不是20H+2=22HCYCLE-5SUM+1SUM

DB20H对于地址操作数唯一有意义的算术运算是加/减一个数字量SUM+2的寻址方式是?直接寻址4.1汇编语言基础22算术逻辑移位指令移位指令表达式

逻辑运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。主要有:AND,OR,NOT,XOR操作数只能是常数,且结果也是数字的。10101100BAND00001111B;结果为00001100B10101100BOR00001111B;结果为10101111B

NOT00001111B;结果为11110000B10101100BXOR00001111B;结果为10100011B10101100BXORSUM是变量4.1汇编语言基础23算术逻辑移位指令移位指令表达式

逻辑运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。主要有:AND,OR,NOT,XOR逻辑运算符同时也是逻辑运算指令的操作助记符ANDBL,0AHOR0FH指令助记符(第3章)逻辑运算符只有当出现在指令的操作数部分时,才是构成表达式的逻辑运算符。4.1汇编语言基础24算术逻辑移位指令移位指令表达式

移位运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。主要有:SHL、SHR操作数都是数字操作数,结果也是数字的MOVCL,10SHR2;10右移2位(4)结果为2MOVBL,30SHL

2;30左移2位(4)结果为1204.1汇编语言基础25算术逻辑移位指令移位指令表达式

关系运算符由操作数和运算符组合的序列,它在汇编时能产生一个值。主要有:EQ、NE、LT、GT、LE、GE操作数要么都是数字操作数,要么是同一段内两个存储单元的地址MOVAX,10HGT16ADDBX,6EQ0110B结果成立时,其结果为全1,否则为全0。MOVAX,0ADDBX,0FFFFH4.1汇编语言基础26算术逻辑移位指令移位指令表达式汇编语言中的表达式不能成单独语句,只能是语句的一个部分MOVAX,SUM+2JMPAGAIN+5MOVBL,VBGEVA表达式的中运算符写在指令的源操作数位置,在汇编时由汇编程序运算,并将结果作为指令中的操作数。ANDBL,0AHOR0FHANDBL,0FH指令写在操作码位置,是CPU执行的。4.1汇编语言基础274.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义算术逻辑移位指令移位指令数据定义变量名DB

表达式

;定义字节变量变量名DW

表达式

;定义字变量变量名DD

表达式

;定义双字变量

数据定义语句表达式可以有以下几种情况:一个或多个常数或表达式。常数之间、表达式之间用逗号隔开。带引号的字符串。A

DB12,34,2+3*5B

DB‘Hello!’284.1汇编语言基础C

DB?D

DB5DUP(0FFH)E

DB3DUP(‘1’,’a’)算术逻辑移位指令移位指令数据定义变量名DB

表达式

;定义字节变量变量名DW

表达式

;定义字变量变量名DD

表达式

;定义双字变量

数据定义语句表达式可以有以下几种情况:

一个问号“?”。重复方式。此时表达式部分的格式为:

重复次数DUP(表达式)294.1汇编语言基础算术逻辑移位指令移位指令数据定义301000:0000H1000:0001H1000:0002H1000:0003H1000:0004H1000:0005H1000:0006H1000:0007H1000:0008H1000:0009H1000:000AH1000:000BH1000:000CH…30H34H12H78H56H08H03HEFHCDHABH00HDATA1DATA2DATA3DATA4例4.1-1:定义如下10个变量,假设第一个变量DATA1的地址为1000:0000H,画出变量在内存中存放的示意图。DATA1DB30HDATA2DW1234H,5678HDATA3DB(2*4),(9/3)DATA4DD0ABCDEFH4.1汇编语言基础算术逻辑移位指令移位指令数据定义31例4.1-1:定义如下10个变量,假设第一个变量DATA1的地址为1000:0000H,画出变量在内存中存放的示意图。DATA5DB‘1234’DATA6DW‘AB’,’C’,‘D’DATA7DB?1000:000BH1000:000CH1000:000DH1000:000EH1000:000FH1000:0010H1000:0011H1000:0012H1000:0013H1000:0014H1000:0015H1000:0016H1000:0017H…31H32H33H34H42H41H43H00H44H00HDATA5DATA6DATA7?4142H,0043H,0044H4.1汇编语言基础算术逻辑移位指令移位指令数据定义321000:0016H1000:0017H1000:0018H1000:0019H1000:001AH1000:001BH1000:001CH1000:001DH1000:001EH1000:001FH1000:0020H…??00H00H00H?????DATA8DATA9DATA10例4.1-1:定义如下10个变量,假设第一个变量DATA1的地址为1000:0000H,画出变量在内存中存放的示意图。DATA8DW?DATA9DB3DUP(0)DATA10DB5DUP(?)4.1汇编语言基础334.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义算术逻辑移位指令移位指令分析运算符与合成运算符分析运算符34操作符表达式意义SEGSEG变量名/标号返回变量或标号所在的段地址OFFSETOFFSET变量名/标号返回变量或标号所在段内的偏移地址TYPETYPE变量名/标号返回变量或标号的类型值LENGTHLENGTH变量名返回变量定义的元素个数SIZESIZE变量名返回变量所占的字节数变量和标号均具有这三种属性。4.1汇编语言基础操作符表达式意义SEGSEG变量名/标号返回变量或标号所在的段地址OFFSETOFFSET变量名/标号返回变量或标号所在段内的偏移地址TYPETYPE变量名/标号返回变量或标号的类型值LENGTHLENGTH变量名返回变量定义的元素个数SIZESIZE变量名返回变量所占的字节数算术逻辑移位指令移位指令分析运算符与合成运算符分析运算符35变量的TYPE指变量所包含的字节数。标号的TYPE为FAR(-2)或NEAR(-1)。DB:1 DW:2 DD:44.1汇编语言基础操作符表达式意义SEGSEG变量名/标号返回变量或标号所在的段地址OFFSETOFFSET变量名/标号返回变量或标号所在段内的偏移地址TYPETYPE变量名/标号返回变量或标号的类型值LENGTHLENGTH变量名返回变量定义的元素个数SIZESIZE变量名返回变量所占的字节数算术逻辑移位指令移位指令分析运算符与合成运算符分析运算符36A

DB12,34,2+3*5LENGTHA

;结果为14.1汇编语言基础操作符表达式意义SEGSEG变量名/标号返回变量或标号所在的段地址OFFSETOFFSET变量名/标号返回变量或标号所在段内的偏移地址TYPETYPE变量名/标号返回变量或标号的类型值LENGTHLENGTH变量名返回变量定义的元素个数SIZESIZE变量名返回变量所占的字节数算术逻辑移位指令移位指令分析运算符与合成运算符分析运算符37D

DB5DUP(0FFH)LENGTHD

;结果为5等于表达式中DUP的重复次数否则为1(无DUP)4.1汇编语言基础操作符表达式意义SEGSEG变量名/标号返回变量或标号所在的段地址OFFSETOFFSET变量名/标号返回变量或标号所在段内的偏移地址TYPETYPE变量名/标号返回变量或标号的类型值LENGTHLENGTH变量名返回变量定义的元素个数SIZESIZE变量名返回变量所占的字节数算术逻辑移位指令移位指令分析运算符与合成运算符分析运算符38SIZE=LENGTHTYPE4.1汇编语言基础39算术逻辑移位指令移位指令分析运算符与合成运算符例4.1-2:对于例4.1-1定义的各变量,分析下面表达式的值。SEG DATA1 ;结果为1000HOFFSET DATA2 ;结果为0001HTYPE DATA3 ;结果为1DATA3DB(2*4),(9/3)MOVBX,OFFSETDATA2LEA BX,DATA2等价源操作数的寻址方式是什么?立即寻址直接寻址4.1汇编语言基础40算术逻辑移位指令移位指令分析运算符与合成运算符例4.1-2:对于例4.1-1定义的各变量,分析下面表达式的值。LENGTH DATA4 ;结果为1SIZE DATA5 ;结果为1DATA4DD0ABCDEFH等于表达式中DUP的重复次数否则为1(无DUP)DATA5DB‘1234’SIZE=LENGTHTYPE=11=14.1汇编语言基础41算术逻辑移位指令移位指令分析运算符与合成运算符例4.1-2:对于例4.1-1定义的各变量,分析下面表达式的值。LENGTH DATA9 ;结果为3SIZE DATA9 ;结果为3

DATA9DB3DUP(0)等于表达式中DUP的重复次数否则为1(无DUP)SIZE=LENGTHTYPE=31=34.1汇编语言基础算术逻辑移位指令移位指令分析运算符与合成运算符合成运算符42功能:将PTR左边的类型属性赋给右边的表达式。格式:类型/距离

PTR表达式类型/距离—BYTE、WORD、DWORD

/NEAR、FAR等。由已存在的存储器操作数声明一个段和偏移量相同,而类型不同的新的存储器操作数。表达式—变量名、标号或其他表达式。

用法1:MOVAX,WORDPTRDATA3DATA3DB(2*4),(9/3)AX=0308HMOVBYTEPTR[0010H],01H(p44)MOV AX,DATA3

…08H03H…DATA3DATA3+14.1汇编语言基础算术逻辑移位指令移位指令分析运算符与合成运算符合成运算符43功能:将PTR左边的类型属性赋给右边的表达式。格式:类型/距离

PTR表达式类型/距离—BYTE、WORD、DWORD

/NEAR、FAR等。表达式—变量名、标号或其他表达式。

MOVBYTEPTR[0010H],01H(p44)当不能明确操作数的类型时,一定要用PTR伪指令进行说明用法2:MOV[1200H],01HMOVBYTEPTR[1200H],01HMOVWORDPTR[1200H],01H4.1汇编语言基础算术逻辑移位指令移位指令分析运算符与合成运算符合成运算符44功能:将PTR左边的类型属性赋给右边的表达式。格式:类型/距离

PTR表达式类型/距离—BYTE、WORD、DWORD

/NEAR、FAR等。表达式—变量名、标号或其他表达式。

MOVBYTEPTR[0010H],01H(p44)用PTR来改变距离属性用法3:JMPFARPTRSUB1实现段间转移(4.3节)4.1汇编语言基础454.1汇编语言基础主要内容汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义算术逻辑移位指令移位指令符号定义符号46通过将标识符(标号)与整数表达式或文本联系起来而创建的。

符号常量不占用任何实际的存储空间。符号常量仅在编译期间编译器扫描程序时使用,在运行期间不能修改。#definePI3.1425与C语言类似:#defineucharunsignedchar4.1汇编语言基础算术逻辑移位指令移位指令EQU伪指令47功能:给符号名定义一个值,或者别的符号名,甚至可以定义成一条可执行的指令BSIZEEQU100COUNTEQUCX用EQU定义的符号不能在同一源文件中重定义格式:符号名EQU表达式MOVCOUNT,BSIZEMOVCX,100

BSIZEEQU2004.1汇编语言基础符号定义算术逻辑移位指令移位指令EQU伪指令48功能:给符号名定义一个值,或者别的符号名,甚至可以定义成一条可执行的指令用EQU定义的符号不能在同一源文件中重定义格式:符号名EQU表达式CBDEQUAADMOVAX,0307HCBD

MOVBL,5DIVBLMOVAX,0307HAAD

MOVBL,5DIVBL4.1汇编语言基础符号定义算术逻辑移位指令移位指令=伪指令49功能:等号伪指令将符号名与表达式联系起来COUNT=500MOVAX,COUNT

MOVAX,500同一程序中以“=”定义的符号可以重定义

COUNT=20ADDBX,COUNT

ADDAX,20注意与“EQU”伪指令的区别格式:符号名=表达式4.1汇编语言基础符号定义算术逻辑移位指令移位指令LABEL伪指令50功能:给已定义的变量或标号取另一个名字,并可重新定义它的类型属性格式:符号名LABEL类型属性4.1汇编语言基础符号定义DATB

LABELBYTE

;DATB为DATW的别名,字节型DATWDW3031H,3233H

;DATW变量,为字型MOVAL,DATB[0]

;31H→ALMOVBX,DATW[1]

;3330H→BX用法1:与变量连用…31H30H33H32H…DATWDATBAL31HBX3330H算术逻辑移位指令移位指令LABEL伪指令51功能:给已定义的变量或标号取另一个名字,并可重新定义它的类型属性格式:符号名LABEL类型属性4.1汇编语言基础符号定义STACKSEGMENTDB100DUP(?)TOPLABELWORD ;为堆栈分配100个字节,TOP为栈底的名字,类型为字STACKENDS用法2:堆栈段定义(第4章)汇编语言基础汇编语言的语句组成数据项表达式数据定义分析运算符与合成运算符符号定义定位定义4.1汇编语言基础算术逻辑移位指令移位指令定位定义

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论