版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计5.1宏汇编语言的基本语法5.2伪指令5.3宏指令5.4汇编语言程序的结构5.5DOS系统功能调用5.6汇编语言程序设计第5章1精选课件ppt汇编语言程序设计5.1宏汇编语言的基本语法第5章1精汇编语言●汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。●使用汇编语言编写的程序称作汇编语言源程序。汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。●把汇编语言源程序翻译成目标程序的软件称为汇编程序。
汇编语言源程序目标程序汇编程序汇编过程的含义如图:2精选课件ppt汇编语言●汇编语言是一种采用助记符表示的程序设计语言,即用助宏汇编语言的基本语法5.1.1常数、变量和符号●常数、变量和符号是汇编语言能识别的数据项,是指令和伪指令语句中操作数的基本组成部分,其大小和属性与机器语言代码生成有直接关系。
5.1变量标号常数3精选课件ppt宏汇编语言的基本语法5.1.1常数、变量和符号●常数、变常数
●常数是没有任何属性的纯数值。在汇编期间,它的值已经完全确定,而且在程序的运行中也不会发生变化,它可以有以下几种类型:八进制数:●以字母O或Q结尾,由若干个0到7的数字组成的序列。例如:255Q、377Q二进制数:●以字母B结尾的由一串“0”和“1”组成的序列。例如:0010110B4精选课件ppt常数●常数是没有任何属性的纯数值。在汇编期间,它的值已经3.十进制数:●由若干个0到9的数字组成的序列,可以以字母D结尾,也可以省略字母。例如:1234D或1234。4.十六进制数:●以字母H结尾,由若干个0到9的数字和字母A到F组成的序列,且必须以数字开头。例如:56H,0B3FH5.字符串常量:●用引号括起来的一个或多个字符。这些字符以ASCII码形式存在内存中。例如:“A”的值是41H,”B”的值是42H常数5精选课件ppt3.十进制数:4.十六进制数:5.字符串变量●变量通常是存放在某些存储单元的数据,这些数据在程序运行期间可以修改。变量使用数据定义伪指令DB、DW、DD等定义的。经过定义的变量,每个变量均有三个属性:段属性(SEGMENT):●表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。偏移属性(OFFSET):●表示变量的偏移地址,即在逻辑段中距段的起始点的字节数。类型属性(TYPE):●表示变量占用存储单元的字节数。用DB定义的变量类型属性为字节;用DW定义的变量类型属性为字(2字节);用DD定义的变量类型属性为双字(4字节)6精选课件ppt变量●变量通常是存放在某些存储单元的数据,这些数据在程序运标号●标号表示一条指令所在的地址,所以标号也是指令语句的地址符号,常用作转移指令(包含子程序调用指令)的操作数,即目标地址。●标号通常由字母数字串组成,但第一个字母必须为字母。标号有三种属性:段属性(SEGMENT):●表示标号所在段的段基址。2.偏移属性(OFFSET):●表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。3.距离属性(或类型属性TYPE):●表示标号作为段内或段间的转移属性。7精选课件ppt标号●标号表示一条指令所在的地址,所以标号也是指令语句的地(1)NEAR(近):●表示本标号只能被标号所在段内的转移和调用指令访问(即段内转移)距离属性分为两种:(2)FAR(远):●表示本标号可以被其他段(不是标号所在段)的转移和调用指令访问(即段间转移)8精选课件ppt(1)NEAR(近):距离属性分为两种:(2)FAR(远):表达式与运算符8086宏汇编语言允许使用的表达式有两种类型:5.1.2它所产生的结果是一个存储器地址,如果这个地址存放的是数据,一般称它为变量,如果存放的是指令,一般称它为标号。只产生数值结果。数指表达式地址表达式9精选课件ppt表达式与运算符8086宏汇编语言允许使用的表达式有两种类型:算术运算符逻辑运算符3.关系运算符运算符主要包括以下6种类型分析操作符综合运算符6.其他运算符:10精选课件ppt算术运算符运算符主要包括以下6种类型分析操作符:10精选课件算术运算符[例5-1]CONT=15*4;CONT=60CONT=CONT/8;CONT=7CONT=CONTMOD3;CONT=1MOVAL,21HSHL2;AL=84H●包括加(+)、减(-)、乘(*)、除(/)、求余数(MOD)、左移(SHL)和右移(SHR)注意:●除了加和减法运算符可以使用变量和符号外,其他运算符只适用于常数的数值运算。11精选课件ppt算术运算符[例5-1]CONT=15*4逻辑运算符[例5-2]ANDDX,PORTANDOFEH其中第二个AND是逻辑运算符,在程序汇编时,计算PORTANDOFEH产生一个立即数作为指令操作数。而第一个AND是指令助记符,在汇编以后执行AND指令,DX的内容与上述立即数相“与”,结果放在DX中。●包括按位操作的与(AND)、或(OR)、异或(XOR)、和非(NOT)四种运算符。它们只适用于对常数进行逻辑运算。注意:●AND、OR、XOR和NOT也是指令助记符。12精选课件ppt逻辑运算符[例5-2]ANDDX,POR关系运算符[例5-4]
MOVBX,((PORTLT5)AND20)OR((PORTGE5)AND30)此例中当PORT的值小于5时,执行MOVBX,20否则执行MOVBX,30。[例5-3]MOVBX,PORTLT5若PORT的值小于5,则汇编程序把上条指令汇编为:MOVBX,OFFFFH;否则被汇编为:MOVBX,0。●包括EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或大于)、GE(大于或等于)共六种。13精选课件ppt关系运算符[例5-4][例5-3]MOV分析操作符(数值返回运算符)(2)取段基址格式:SEG变量名或标号功能:取变量名或标号所在段的段地址。(1)取地址的偏移量格式:OFFSET变量名或标号功能:取变量名或标号所在段的段内偏移量。格式:TYPE变量名或标号功能:返回一个数字值。若TYPE运算符加在变量名前,返回的数值是该变量的类型属性;若TYPE运算符加在标号前,返回的数值则是该变量距离属性;返回的数值与性的关系表4-1。求变量名或标号的类型值(3)14精选课件ppt分析操作符(数值返回运算符)(2)取段基址(1)取地址的偏移标号/变量属性类型值字节变量BYTE1字变量WORD2双字变量DWORD4标号NEAR-1标号FAR-2表5-1存储器操作数的类型值15精选课件ppt标号/变量属性类型值字节变量[例5-5]BUF1DB100DUP(0)BUF2DB200DUP(20H)BUF3DD100DUP(13H)则LENGTHBUF1=100LENGTHBUF1=100LENGTHBUF1=100
(4)求长度格式:LENGTH变量名功能:返回一个变量名所占的存储单元(字节、字或双字)的数目。如果变量使用重复定义子句说明的,则返回DUP前面的数值;若没有DUP明,则返回值总是1。分析操作符(数值返回运算符)16精选课件ppt[例5-5]BUF1DB100DUP((5)求大小格式:SIZE变量名功能:返回变量名所占存储单元的字节数,它等于LENGTH和TYPE两个运算符返回值的乘积。[例5-6]上例中SIZEBUF1=100SIZEBUF2=200SIZEBUF3=0分析操作符(数值返回运算符)17精选课件ppt(5)求大小[例5-6]上例中SIZEBUF综合运算符[例5-7]MOVBYTEPTR[DI],4;指明目的操作数为字节类型JMPDWORDPTR[BP];指明目的操作数为双字节类型(即指明转移操作为段间转移)(1)PTR运算符格式:类型PTR表达式功能:用于指出变量、标号或地址表达式的类型属性,新的类型只在当前指令内有效。18精选课件ppt综合运算符[例5-7](1)PTR运算符18精选课件ppt[例5-8]AEQUTHISBYTEBDW20DUP(?)A、B对应同一存储器地址,对变量A为字节访问,对变量B为字节访问,且A和B具有相同的段基址和偏移量。(2)THIS运算符格式:THIS类型功能:把它后面指定的类型或距离属性赋给当前的变量、标号或地址表达式。综合运算符●THIS运算符使下面的“原标号或原变量”另有新的名字和类型,但并不分配新的存储单元。注意:19精选课件ppt[例5-8](2)THIS运算符综合运算符●THIS运其他运算符[例5-9]
K1EQU1234HMOVAL,LOWK1;AL←34HMOVBL,HIGHK1;BL←12H(1)HIGH和LOW运算符格式:HIGH表达式
LOW表达式功能:从运算对象中分理处高字节或低字节。20精选课件ppt其他运算符[例5-9](1)HIGH和LOW运算符2[例5-10]L1:JMPSHORTL2┇L2:MOVAX,BX┇运算符的优先级见表4-2所示。(2)SHORT运算符格式:SHORT标号功能:当转移的目标地址与本转移指令的下一条指令之间的字节距离在–128~127范围时,可以用SHORT运算符进行说明。其他运算符21精选课件ppt[例5-10]运算符的优先级见表4-2所示。(2)SHO表5-2运算符的优先级别优先级别运算符高低0括号中的表达式1LENGTH,SIZE,WIDTH,MASK2PTR,OFFSET,SEG,TYPE,THIS,段前缀(段寄存器名)3HIGH,LOW4*,/,MOD,SHL,SHR5+、-6EQ,NE,LT,LE,GT,GE7NOT8AND9OR,XOR10SHORT22精选课件ppt表5-2运算符的优先级别优先级别运算符0括号中的表达式1伪指令5.2.1伪指令语句的格式伪指令语句的格式为:符号名定义符操作数;注释●定义符字段在伪指令语句中,定义符表示该语句的伪操作功能。定义符有汇编程序规定,宏汇编程序中使用了数十种定义符。5.2●符号名字段符号名用在伪指令语句的前面,用空格和定义符隔开。●操作数字段操作数可以是常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号和一些专用符号等。●注释字段这是一个任选字段,它必须以分号开始,和指令语句的注释功能一样。23精选课件ppt伪指令5.2.1伪指令语句的格式伪指令语句的格式为:符号常用伪指令●符号名一被EQU定义,就不能再赋值,既不能用EQU在位符号名重新赋值。[例5-11]ALFAEQU100COUNTEQUALFA(1)等值伪指令格式:符号名EQU表达式功能:将表达式的值赋给符号名。1.符号定义伪指令(赋值语句)5.2.2注意:24精选课件ppt常用伪指令●符号名一被EQU定义,就不能再赋值,既不能用[例5-12]ALFA=100MOVAL,ALFA;AL←100ALFA=ALFA+2;ALFA=102MOVAL,ALFA;AL←102(2)等号伪指令格式:符号名=表达式功能:将表达式的值赋给符号名等号伪指令可以在程序中不同的地方多次使用以重新为符号名赋值。常用伪指令25精选课件ppt[例5-12](2)等号伪指令常用伪指令25精选课件ppt[例5-13]BARYLABELWORD;定义BARY为字类型┆ADDAX,BARY;字加法ABCFLABELFAR;ABCF为FAR类型标号(3)定义符号名和伪指令格式:符号名LABEL类型功能:定义一个标号或变量,并指定其类型。常用伪指令26精选课件ppt[例5-13](3)定义符号名和伪指令常用伪指令26精选课件
格式:[变量名]DB表达式;定义字节[变量名]DW表达式;定义字[变量名]DD表达式;定义双字[变量名]DQ表达式;定义8个字节[变量名]DT表达式;定义10个字节数据定义伪指令2.27精选课件ppt格式:数据定义伪指令2.27精选课件ppt●表达式是赋给变量的初始值,可以有一个,也可以有多个,常见的有以下几种:[例5-14]BUFDB20H,30HDATDW1234H,5678H;变量BUF字节单元的内容是20H,下一个字节单元即BUF+1单元的内容为30H。;字变量DAT的内容为1234H,占用两个字节单元,34H存放在低地址单元,12H存放在高地址单元,下一个字单元即DAT+2单元的内容为5678H,仍是低字节存在低地址单元。
●这实际上是为数据分配存储单元,并把变量名作为该存储单元的名称。数值表达式(1)28精选课件ppt●表达式是赋给变量的初始值,可以有一个,也可以有多个,[例5-15]STRINGDB‘ABCD’;将A的ASCII码41H存在STRING字节单元,将B、C、D的ASCII码依次存放在后续单元(即STRING+1、STRING+2和STRING+3单元)*DW伪指令可以有两个字符组成的字符串分配一个字单元。[例5-16]STRING1DW‘AB’;等价于STRING1DW4142H
ASCII字符串●可以用DB伪指令为ASCII字符串中的每一个字符分配一个字单元。(2)29精选课件ppt[例5-15];将A的ASCII码41H存在S?表达式
●这是为数据项分配存储单元的一种方法,只是存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最终结果。[例5-17]
RESULTDB?;预置一个字节单元,其值不定(4)重复定义子句DUP●利用重复定义子句DUP可以为若干个重复数据分配存储单元。带DUP的表达式格式如下:
nDUP(表达式)●其中圆括号内的表达式是重复的内容,n是重复次数。(3)30精选课件ppt?表达式●这是为数据项分配存储单元的一种方法,只是存储单元段定义伪指令
●段定义伪指令用于将源程序划分成若干段,这些逻辑段按用途可分为代码段(用于存放程序)、数据段(用于存放数据)、堆栈段(用于堆栈操作)和附加段(附加的数据段)。●需要说明的是,并不是所有的程序都必须包含这四个逻辑段,有时只需要一个段或两个段。格式:段名SEGMENT[定位类型][组合类型][′类别名′]┆段名ENDS●功能:把模块划分为若干个逻辑段。每个SEGMENT/ENDS可定义一个逻辑段。3.
31精选课件ppt段定义伪指令●段定义伪指令用于将源程序划分成若干段,这些逻●
SEGMENT后的三个参数一般来说可以任选,它们的含义、类型及功能如下:●定位类型表示将某段装入内存时,对段的起始边界的要求。合理选择定位类型能够在进行段和模块的定位时充分利用存储空间。它有以下四种选择:●
PAGE:●
PARA:●
WORD:●
BYTE:定位类型(1)32精选课件ppt●SEGMENT后的三个参数一般来说可以任选,它们的含义、组合类型●用来在多模块连接时告诉连接程序本段和其他段的组合关系。组合类型有以下几种:●
NONE:●
PUBLIC:●
COMMON:●STACK:●
AT表达式:●
MEMORY:(2)33精选课件ppt组合类型●用来在多模块连接时告诉连接程序本段和其他段的组合关类别●可以是任何合法的自定义符,必须用单引号括起来。连接程序只使其与同类别段发生关联,这些同类别段被依序放在连续存储区域内,但各段仍独立。典型类别如:′STACK′′CODE′(3)34精选课件ppt类别●可以是任何合法的自定义符,必须用单引号括起来。连接程序段寄存器说明伪指令格式:ASSUME段寄存器:段名[,段寄存器:段名…]功能:向汇编程序指示当前各段所用的段寄存器,设定段寄存器与段的对应关系。注意:①本伪指令只是指示各逻辑段使用寄存器的情况,并没有对段寄存器内容进行装填。段寄存器的实际值(CS除外)还要由传送指令在程序中装填数据。②ASSUME伪指令也可以用来取消段寄存器与段之间的对应关系(用NOTHING),然后再建立新的对应关系。4.35精选课件ppt段寄存器说明伪指令格式:ASSUME段寄存器:段名过程定义伪指令●过程是程序的一部分,它可以被程序调用。每次可调用一个过程,当过程中的指令执行完后,控制返回调用它的地方。过程的定义是用过程定义伪指令完成的。格式:过程名PROC[NEAR/FAR]┇}过程体RET过程名ENDP功能:完成过程定义,在过程体中实现过程的操作功能
5.36精选课件ppt过程定义伪指令●过程是程序的一部分,它可以被程序调用。每次可注意①过程名是自定义符,定义开始和结束时的过程名必须相同。②过程名有三个属性:段地址、偏移量和距离属性(NEAR或FAR),汇编程序在汇编时根据过程类型生成段内或段间的调用或返回指令代码。③在一个过程中,可以有多个RET指令。一个过程总是通过RET指令返回,RET常作为过程的最后一条指令。
【例5-20】
CODESEGMENTAPRCPROCNEARADDAX,BX┆APRCENDPSTAT:MOVAX,NOM┆CALLAPRC┆CALLAPRC┆CODEENDSENDSTATRET
37精选课件ppt注意①过程名是自定义符,定义开始和结束时的过程名必须相同。模块定义及通信伪指令●汇编语言可以把程序划分成许多模块,并对每个模块独立地进行汇编和调试。(1)模块开始伪指令格式:NAME模块名功能:指明程序模块的开始,并指出模块名。●模块名是自定义符,不能是系统保留字。若该项使用默认值,则取TITLE语句中的页标题6个字符;若没有TITLE语句,则取源程序文件名为模块名。6.38精选课件ppt模块定义及通信伪指令●汇编语言可以把程序划分成许多模块,并对模块结束伪指令(源程序结束伪指令)格式:END启动标号或过程名功能:END表示一个模块的结束。通知汇编程序源程序到此结束,并给出执行程序的入口位置。①END通常与模块开始伪指令NAME联合使用,当NAME缺省时,则END只表示源程序的结束。②汇编处理时,一个模块就是一个独立的汇编单位,汇编处理只进行到模块结束语句END为止。【例5-21】
START:MOVAX,DATA┇ENDSTART(2)注意39精选课件ppt模块结束伪指令(源程序结束伪指令)格式:END启动标号或定义公共符号名伪指令格式:PUBLIC符号名[,┅]符号名可以是变量、符号常量、标号或过程名。功能:由PUBLIC定义的符号名,可以被其他模块引用,即由其定义的符号名是公共符号名,可以被外部模块引用。
●在一个模块中,同一个符号名只能被定义一次。例如:PUBLICABC,ALFA(3)注意40精选课件ppt定义公共符号名伪指令格式:PUBLIC符号名[,┅]●定义外部符号名伪指令格式:EXTRN符号名:类型[,┅]符号名在其他模块中已由PUBLIC所定义。类型指的是符号名的类型,符号名的类型应与原模块中定义的类型一致。它们可以是:●内存变量型:BYTE、WORD、DWORD●过程型:NEAR、FAR●数值型:ABS功能:定义本模块中将要引用的外部模块中的符号名,它们应在各自的模块中已用PUBLIC伪指令进行了定义。●在一个模块中,同一个符号名只能被定义一次。【例5-22】EXTRNABC:BYTE,FLP:FAR(4)注意41精选课件ppt定义外部符号名伪指令格式:EXTRN符号名:类型[,┅列表伪指令(1)格式控制伪指令●格式控制伪指令用于对源程序排版、加标题和子标题。
1)自动排版(行数、列数)格式:PAGE[行],[行字数]功能:打印列表文件时,规定页的行数和每行的字符数。例如:PAGE60,132其中行取值10~155(默认值为66),列取值60~132(默认值为80)。7.42精选课件ppt列表伪指令(1)格式控制伪指令●格式控制伪指令用于对源程建立标题格式:TITLE标题正文SUBTTL子标题正文功能:在打印列表文件时,TITLE伪指令用来给源程序设置标题,以后每页的第一行都列出该标题(不超过60个字符)。SUBTTL伪指令实现每页打印标题后再打印子标题(字符数不限)。当SUBTTL不带正文时,表示取消前面规定的子标题。2)43精选课件ppt建立标题格式:2)43精选课件ppt列表控制伪指令●这些伪指令用于打开或关闭列表文件的输出。格式:.LIST.XLIST%OUT功能:.LIST用于打开列表文件的输出。.XLIST用于关闭列表文件的输出。%OUT可在汇编时显示接在其后的信息,以便了解汇编的过程。
(2)44精选课件ppt列表控制伪指令●这些伪指令用于打开或关闭列表文件的输出。格式记录伪指令(1)记录定义格式:记录名RECORD字段名:宽度[=表达式][,┅]功能:用于定义一个记录。指明记录中字段的位长度及初值,并用记录名表示已定义的记录。
【例5-23】
表示一个学生情况的记录,设年龄占5位,性别占1位(1:男,0:女),身体状况占2位(00:健康,01:良好,10:一般,11:差),可定义为:
STDRCRECORDYER:5,SEX:1=0,STT:2①记录名、字段名必须存在,不可使用默认值。②各字段总和不能超过16位。③表达式的初值应取正整数。8.注意45精选课件ppt记录伪指令(1)记录定义格式:记录名RECORD记录存储单元分配及赋值格式:记录变量名记录名<字段值表>功能:将字段值表中的各字段值赋给记录的各字段。【例5-24】
TANRECORDX:6,Y:4,Z:6APTAN<5,10,,>BPTAN<12,20>●字段值表中缺省项的默认值为0。(2)注意●此例在存储器中分配两个记录,每个记录为两个字节。46精选课件ppt记录存储单元分配及赋值格式:记录变量名记录名<字段值记录操作符1)取字段宽度操作符格式:WIDTH记录名或记录字段名功能:用于返回该记录或记录字段的宽度(二进制位数)。【例5-25】
MOVAL,WIDTHYER;AL←5MOVBH,WIDTHSEX;BH←1MOVAH,WIDTHSTDRC;AH←8(3)47精选课件ppt记录操作符1)取字段宽度操作符格式:WIDTH记录名取字段位置操作符格式:MASK字段名功能:返回一个8位或16位的二进制数。该字段所在的位为1,其他位为0,以确定该字段在记录中所在的字段的位置。【例5-26】
MOVBL,MASKYER;BL←11111000MOVAH,MASKSEX;AH←000001002)48精选课件ppt取字段位置操作符格式:MASK字段名【例5-26】结构伪指令●结构伪指令是把多个数据定义语句组成一个结构,而把每一个数据定义语句称为一个结构字段,内存变量名称为字段名。(1)结构定义伪指令格式:结构名STRUC[字段名]〈数据定义语句〉┇结构名ENDS
功能:定义一个结构。它含有由数据定义语句所确定的数据结构,并引用结构名来代表这种结构。
【例5-27】
ABCSTRUCADB?BDB′ABC12′CDW120ABCENDS9.49精选课件ppt结构伪指令●结构伪指令是把多个数据定义语句组成一个结构,而把结构及字段的引用格式:结构变量名.结构字段名功能:通过引用结构变量名及其字段名来使用结构类型数据中的字段。【例5-29】MOVAL,SA.A;引用结构变量SA的A字段值(3)50精选课件ppt结构及字段的引用格式:结构变量名.结构字段名【例5-29】条件汇编伪指令●条件汇编的主要作用是根据条件有选择地对程序汇编。一般格式:IF××〈表达式〉┇}程序段1[ELSE]┇}程序段2
ENDIF功能:当条件为真时,对程序段1进行汇编,如有ELSE及程序段2则跳过;当条件为假时,跳过程序段1,对程序段2进行汇编(若有ELSE及程序段2)。10.51精选课件ppt条件汇编伪指令●条件汇编的主要作用是根据条件有选择地对程序汇●
IF表达式功能:表达式值不为0,汇编程序段1,否则跳过。●
IFE表达式功能:表达式值为0,汇编程序段1,否则跳过。●
IFB〈参数〉功能:参数为空格,汇编程序段1,否则跳过。(参数要用〈〉扩起)●
IFNB〈参数〉功能:参数不为空格,汇编程序段1,否则跳过。●
IFIDN〈参数1〉,〈参数2〉功能:字符串参数1与字符串参数2相同,汇编程序段1,否则跳过。有多种伪指令操作,下面介绍常用的几个:条件汇编52精选课件ppt●IF表达式有多种伪指令操作,下面介绍常用的几个:条件其他伪指令(1)定位伪指令格式:ORG数值表达式功能:指定在它之后的程序段或数据块所存放的起始地址的偏移量。【例5-31】
ORG0100H;从0100H开始存放ORGDS|+20;DS|为当前地址,从此地址后20字节处开始存放●当无ORG伪指令时,从段首址开始存放程序或数据。11.注意注释说明伪指令格式:COMMENT定界符注释定界符功能:用于在程序中加入注释,即定界符间的内容全部为注释。(2)53精选课件ppt其他伪指令(1)定位伪指令格式:ORG数值表达式宏指令
●为了简化汇编语言源程序,可以把一些频繁出现的程序段定义为“宏指令”1.宏定义及其调用宏定义的一般格式为:宏指令名MACRO[形参,形参,┅]┇宏体
ENDM5.354精选课件ppt宏指令●为了简化汇编语言源程序,可以把一些频繁出现的程序段●为了实现ASCII码和BCD码之间的相互转换,往往需要把AL中的内容左移或右移4位。设左移4位,可用下列指令序列实现:MOVCL,4SALAL,CL●若多次使用,则可用一条宏指令来代替,宏定义如下:SHIFTMACROMOVCL,4SALAL,CLENDM【例5-32】55精选课件ppt●为了实现ASCII码和BCD码之间的相互转换,往往需要把A带参数的宏【例5-34】SHIFTMACROXMOVCL,XSALAL,CLENDM●X是一个形式参数,这里代表移位次数。在调用时,可把实际要求的移位次数作为实际参数代入,如SHIFT4,就可用实在参数4代替在宏定义体中出现的形式参数X,从而实现移位4次。若再引用一个形式参数:SHIFTMACROX,YMOVCL,XSALY,CLENDM●用形式参数Y来代替需要移位的寄存器,只要在调用时,把要移位的寄存器作为实际参数代入,就可以对任一个寄存器实现指定的左移操作。2.56精选课件ppt带参数的宏【例5-34】SHIFTMACRO主要的宏操作伪指令(1)宏定义伪指令格式:宏指令名MACRO[形参,形参,┅]┇宏体
ENDM(2)取消宏指令名伪指令格式:PURGE宏指令名[,┅]功能:用于注销若干宏定义。(3)重复伪指令格式:REPT(表达式)┇宏体ENDM功能:重复执行若干次宏体所包含的语句。其中执行的次数由表达式的值决定。3.57精选课件ppt主要的宏操作伪指令(1)宏定义伪指令格式:宏指令名M汇编语言程序的结构●汇编语言源程序由语句序列组成,该语句序列应包括可执行指令组成的指令语句和对符号定义、分配存储单元、分段等一些伪指令语句。●此外,80X86微处理器系统的存储结构是分段式访问结构,这种结构是程序运行的基础。因此80X86汇编语言源程序通常具备数据段、代码段和堆栈段等。5.4.1汇编语言源程序的结构5.458精选课件ppt汇编语言程序的结构●汇编语言源程序由语句序列组成,该语句序列汇编语言和DOS操作系统之间的接口●为保证用户程序执行完后能回到DOS,应采取两项措施:●将用户程序中主程序的一部分定义为FAR过程,其最后一条指令为RET●在代码段的主程序(即FAR过程)的开始处将PSP所在段的段基值DS(或ES)保存进栈,然后再将一个全0的字压入堆栈(PSP的段内偏移地址)。5.4.259精选课件ppt汇编语言和DOS操作系统之间的接口●为保证用户程序执行完后能DOS系统功能调用●
MSDOS中常用的软中断有8条,系统规定它们的中断类型码为20H~27H,它们各自的功能及入口/出口参数见表4-3。5.5●INT21H中断本身包含很多子程序,每个子程序对应一个功能,其编号从0~62H。调用它们时采用统一的格式如下:①传送入口参数到指定寄存器中;②功能号送入AH寄存器;③INT21H。60精选课件pptDOS系统功能调用●MSDOS中常用的软中断有8条,系统常用的系统功能调用1.键盘输入单字符——1号系统功能调用使用格式如下:
MOVAH,1INT21H2.键盘输入字符串——0AH号系统功能调用●功能是将键盘输入的字符串写入到内存缓冲区中,因此必须事先定义一个缓冲区。61精选课件ppt常用的系统功能调用1.键盘输入单字符——1号系统功能调用输出单字符——2号系统功能调用使用格式如下:
MOVDL,′A′MOVAH,2INT21H
●执行2号系统功能调用时,将置入DL寄存器中的字符A送屏幕显示。3.62精选课件ppt输出单字符——2号系统功能调用使用格式如下:3.62输出字符串——9号系统功能调用●功能是将指定的内存缓冲区中的字符串在屏幕上显示出来,缓冲区的字符串以“DS|”为结束标志。使用格式如下:
BUFDB′GOODBYEDS|′┇MOVDX,OFFSETBUFMOVAH,9INT21H;在显示器屏幕上显示GOODBYE
4.63精选课件ppt输出字符串——9号系统功能调用●功能是将指定的内存缓冲区中的使用格式如下:
MOVAH,4CHINT21H●它没有入口参数,执行结果是结束当前正在执行的程序,并返回DOS操作系统。返回操作系统——4CH号系统功能调用5.64精选课件ppt使用格式如下:返回操作系统——4CH号系统功能调用5直接控制台输入/输出单字符——6号系统功能调用如果DL=0FFH,则表示是从键盘输入单字符送AL寄存器;如果DL≠0FFH,则表示是将DL寄存器中的内容送屏幕显示输出。它们的使用格式如下:MOVDL,0FFHMOVAH,6INT21H;键盘输入单字符送ALMOVDL,′A′MOVAH,6INT21H;将DL中的字符A送屏幕显示
6.65精选课件ppt直接控制台输入/输出单字符——6号系统功能调用如果DL=0从串口输入单字符——3号系统功能调用使用格式如下:MOVAH,3INT21H●它没有入口参数,系统将从异步通信口串行输入的字符置入AL寄存器中。使用格式如下:MOVDL,′DS|′MOVAH,4INT21H
●执行时将DL寄存器中的字符通过异步通信口串行输出。为节省篇幅,不再赘述其他的系统功能调用,需要时请参阅附录B。
8.向串口输出单字符——4号系统功能调用7.66精选课件ppt从串口输入单字符——3号系统功能调用使用格式如下:使汇编语言程序设计5.6.1程序设计步骤●程序是计算机命令的有序集合,用计算机求解某些问题时往往需要编制程序,其设计步骤归纳如下:(1)分析问题(2)建立数学模型(3)确定算法(4)绘制程序流程图(5)内存空间分配(6)编制程序与静态检查(7)程序调试5.667精选课件ppt汇编语言程序设计5.6.1程序设计步骤●程序是计算机命令汇编语言程序设计方法1.简单程序设计●简单程序,又称为顺序程序。这种程序的形式最简单,计算机执行程序的方式是“从头到尾”,逐条执行指令语句,直到程序结束,这是最基本的形式,任何程序都离不开这种形式。●在汇编语言程序中简单程序主要由数据传送指令、算术运算指令和逻辑运算指令组合而成。5.6.22.分支程序设计●分支程序可以有两种形式:简单分支结构和多分支结构。其中简单分支结构有两种,相当于高级语言中的IFTHEN和IFTHENELSE结构;多分支结构则相当于高级语言中的DO-CASE结构。它们的流程图如图4-3所示。68精选课件ppt汇编语言程序设计方法1.简单程序设计●简单程序,又称为顺序【例5-38】
比较两个无符号数的大小。在A和B单元各有一个8位无符号数,要求比较这两个无符号数,并根据比较结果在屏幕上显示A>B或B>A(假设这两个数不相等)。分析:首先使用比较指令比较两个无符号数的大小,然后根据标志位,使用无符号数转移指令实现转移。其程序流程图如图5-4所示。
简单分支程序设计(1)(2)多分支程序设计69精选课件ppt【例5-38】比较两个无符号数的大小。简单分支程序设计(3.(1)循环程序的结构与组成循环程序设计1)循环的初始化部分。2)循环工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JSP应用开发项目化教程课后习题参考答案
- 代耕农田肥力提升配套项目可行性研究报告
- 高产油茶种植示范基地可行性研究报告
- 2026年行政审批工作人员法规知识模拟题库含答案
- 2026年贵阳市云岩区社区专职社工试卷(附答案)
- 汽车维修保养店优惠活动通知函(6篇)
- 电子产品定价策略商议函7篇范文
- 2026二下数学期中复习核心素养课件
- 传统手工艺制作技艺指南
- 化妆品公司产品经理产品开发与优化绩效考评表
- 商品和服务税收分类编码(开票指引)
- 注塑模具开发流程和加工工艺
- 射箭动作图解
- 工程土石方作业安全教育培训课件
- 高级经济师《知识产权事务》综合练习4
- 钢平台受力计算
- GB/T 5750.2-2006生活饮用水标准检验方法水样的采集与保存
- GB/T 38634.4-2020系统与软件工程软件测试第4部分:测试技术
- GA/T 718-2007枪支致伤力的法庭科学鉴定判据
- 1、设计初步设计说明书
- 高速公路工程施工安全标准化指南(安全技术分册)
评论
0/150
提交评论