《汇编语言程序设计》PPT课件.ppt_第1页
《汇编语言程序设计》PPT课件.ppt_第2页
《汇编语言程序设计》PPT课件.ppt_第3页
《汇编语言程序设计》PPT课件.ppt_第4页
《汇编语言程序设计》PPT课件.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言程序设计,5.1 宏汇编语言的基本语法 5.2 伪指令 5.3 宏指令 5.4 汇编语言程序的结构 5.5 DOS系统功能调用 5.6 汇编语言程序设计,第 5 章,汇编语言,汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。,使用汇编语言编写的程序称作汇编语言源程序。汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。,把汇编语言源程序翻译成目标程序的软件称为汇编程序。,汇编语言 源程序,目标程序,汇编程序,汇编过程的含义如图:,宏汇编语言的基本语法,5.1.1 常数、变量和符号,常数、变量和符号是汇编语言能识别的数据项,是指令和伪指令语句中操作数的基本组成部分,其大小和属性与机器语言代码生成有直接关系。,5.1,变 量,标 号,常 数,常 数,常数是没有任何属性的纯数值。在汇编期间,它的值已经完全确定,而且在程序的运行中也不会发生变化,它可以有以下几种类型:,八进制数: 以字母O或Q结尾,由若干个0到7的数字组成的序列。 例如:255Q、377Q,二进制数: 以字母B结尾的由一串“0”和“1”组成的序列。 例如:0010110B,3. 十进制数: 由若干个0到9的数字组成的序列,可以以字母D结尾,也可以省略字母。 例如:1234D或1234 。,4. 十六进制数: 以字母H结尾,由若干个0到9的数字和字母A到F组成的序列,且必须以数字开头。 例如: 56H,0B3FH,5. 字符串常量: 用引号括起来的一个或多个字符。这些字符以ASCII码形式存在内存中。 例如:“A”的值是41H,”B”的值是42H,常 数,变 量,变量通常是存放在某些存储单元的数据,这些数据在程序运行期间可以修改。变量使用数据定义伪指令DB、DW、DD等定义的。,经过定义的变量,每个变量均有三个属性:,段属性(SEGMENT): 表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。 偏移属性(OFFSET): 表示变量的偏移地址,即在逻辑段中距段的起始点的字节数。 类型属性(TYPE): 表示变量占用存储单元的字节数。用DB定义的变量类型属性 为字节;用DW定义的变量类型属性为字(2字节);用DD定 义的变量类型属性为双字(4字节),标 号,标号表示一条指令所在的地址,所以标号也是指令语句的地址符号,常用作转移指令(包含子程序调用指令)的操作数,即目标地址。 标号通常由字母数字串组成,但第一个字母必须为字母。,标号有三种属性:,段属性(SEGMENT): 表示标号所在段的段基址。 2. 偏移属性(OFFSET): 表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。 3. 距离属性(或类型属性 TYPE): 表示标号作为段内或段间的转移属性。,(1)NEAR(近): 表示本标号只能被标号所在段内的转移和调用指令访问(即段内转移),距离属性分为两种,:,(2)FAR(远): 表示本标号可以被其他段(不是标号所在段)的转移和调用指令访问(即段间转移),表达式与运算符,8086宏汇编语言允许使用的表达式有两种类型:,5.1.2,它所产生的结果是一个存储器地址,如果这个地址存放的是数据,一般称它为变量,如果存放的是指令,一般称它为标号。,只产生数值结果。,数指表达式,地址表达式,算术运算符 逻辑运算符 3. 关系运算符,运算符主要包括以下6种类型,分析操作符 综合运算符 6. 其他运算符,:,算术运算符,例5-1 CONT = 15*4 ; CONT =60 CONT = CONT /8 ; CONT =7 CONT = CONT MOD 3 ; CONT =1 MOV AL, 21H SHL 2 ; AL = 84H,包括加(+)、减(-)、乘(*)、除(/)、求余数(MOD)、左移(SHL)和右移(SHR) 注意: 除了加和减法运算符可以使用变量和符号外,其他运算符只适用于常数的数值运算。,逻辑运算符,例5-2 AND DX, PORT AND OFEH 其中第二个AND是逻辑运算符,在程序汇编时,计算PORT AND OFEH 产生一个立即数作为指令操作数。而第一个AND是指令助记符,在汇编以后执行AND指令,DX的内容与上述立即数相“与”,结果放在DX中。,包括按位操作的与(AND)、或(OR)、异或(XOR)、和非(NOT)四种运算符。它们只适用于对常数进行逻辑运算。,注意:, AND、OR、XOR和NOT也是指令助记符。,关系运算符,例5-4 MOV BX, (PORT LT 5) AND 20) OR (PORT GE 5) AND 30) 此例中当 PORT 的值小于5时,执行 MOV BX,20 否则执行 MOV BX,30。,例5-3 MOV BX, PORT LT5 若 PORT的值小于5,则汇编程序把上条指令汇编为:MOV BX,OFFFFH; 否则被汇编为:MOV BX,0。,包括EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或大于)、GE(大于或等于)共六种。,分析操作符(数值返回运算符),(2)取段基址 格式: SEG 变量名或标号 功能:取变量名或标号所在段的段地址。,(1)取地址的偏移量 格式: OFFSET 变量名或标号 功能:取变量名或标号所在段的段内偏移量。,格式:TYPE 变量名或标号 功能: 返回一个数字值。若TYPE运算符加在变量名前,返回的数值是该变量的类型属性;若TYPE运算符加在标号前,返回的数值则是该变量距离属性;返回的数值与性的关系表4-1。,求变量名或标号的类型值,(3),表5-1 存储器操作数的类型值,例5-5 BUF1 DB 100 DUP(0) BUF2 DB 200 DUP(20H) BUF3 DD 100 DUP(13H) 则 LENGTH BUF1 = 100 LENGTH BUF1 = 100 LENGTH BUF1 = 100,(4)求长度 格式:LENGTH 变量名 功能: 返回一个变量名所占的存储单元(字节、字或双字)的数目。如果变量使用重复定义子句说明的,则返回DUP前面的数值;若没有DUP明,则返回值总是1。,分析操作符(数值返回运算符),(5)求大小 格式:SIZE 变量名 功能: 返回变量名所占存储单元的字节数,它等于LENGTH和TYPE两个运算符返回值的乘积。,例5-6 上例中 SIZE BUF1 = 100 SIZE BUF2 = 200 SIZE BUF3 =0,分析操作符(数值返回运算符),综合运算符,例5-7 MOV BYTE PTR DI,4 ; 指明目的操作数为字节类型 JMP DWORD PTR BP ; 指明目的操作数为双字节类型(即指明转移操作为段间转移),(1)PTR 运算符 格式:类型 PTR 表达式 功能: 用于指出变量、标号或地址表达式的类型属性,新的类型只在当前指令内有效。,例5-8 A EQU THIS BYTE B DW 20 DUP(?) A、B对应同一存储器地址,对变量A为字节访问,对变量B为字节访问,且A和B具有相同的段基址和偏移量。,(2) THIS 运算符 格式:THIS 类型 功能: 把它后面指定的类型或距离属性赋给当前的变量、标号或地址表达式。,综合运算符, THIS运算符使下面的“原标号或原变量”另有新的名字和类型,但并不分配新的存储单元。,注意:,其他运算符,例5-9 K1 EQU 1234H MOV AL,LOW K1 ;AL 34H MOV BL,HIGH K1 ;BL 12H,(1)HIGH 和 LOW 运算符 格式:HIGH 表达式 LOW 表达式 功能:从运算对象中分理处高字节或低字节。,例5-10 L1: JMP SHORT L2 L2: MOV AX,BX ,运算符的优先级见表4-2 所示。,(2) SHORT 运算符 格式:SHORT 标号 功能: 当转移的目标地址与本转移指令的下一条指令之间的字节距离在 128 127 范围时,可以用SHORT运算符进行说明。,其他运算符,表5-2 运算符的优先级别,伪指令,5.2.1 伪指令语句的格式,伪指令语句的格式为:符号名 定义符 操作数;注释,定义符字段 在伪指令语句中,定义符表示该语句的伪操作功能。定义符有汇编程序规定,宏汇编程序中使用了数十种定义符。,5.2,符号名字段 符号名用在伪指令语句的前面,用空格和定义符隔开。,操作数字段 操作数可以是常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号和一些专用符号等。 注释字段 这是一个任选字段,它必须以分号开始,和指令语句的注释功能一样。,常用伪指令,符号名一被 EQU 定义,就不能再赋值,既不能用EQU在位符号名重新赋值。,例5-11 ALFA EQU 100 COUNT EQU ALFA,(1)等值伪指令 格式:符号名 EQU 表达式 功能:将表达式的值赋给符号名。,1. 符号定义伪指令(赋值语句),5.2.2,注意:,例5-12 ALFA = 100 MOV AL,ALFA ;AL100 ALFA = ALFA+2 ;ALFA = 102 MOV AL,ALFA ;AL102,(2)等号伪指令 格式:符号名 = 表达式 功能:将表达式的值赋给符号名 等号伪指令可以在程序中不同的地方多次使用以重新为符号名赋值。,常用伪指令,例5-13 BARY LABEL WORD ;定义BARY为字类型 ADD AX,BARY ;字加法 ABCF LABEL FAR ;ABCF为FAR类型标号,(3)定义符号名和伪指令 格式:符号名 LABEL 类型 功能:定义一个标号或变量,并指定其类型。,常用伪指令,格式: 变量名 DB 表达式 ;定义字节 变量名 DW 表达式 ;定义字 变量名 DD 表达式 ;定义双字 变量名 DQ 表达式 ;定义8个字节 变量名 DT 表达式 ;定义10个字节,数据定义伪指令,2.,表达式是赋给变量的初始值,可以有一个,也可以有多个,常见的有以下几种:,例5-14 BUF DB 20H , 30H DAT DW 1234H, 5678H,;变量BUF字节单元的内容是20H,下一个字节单元即 BUF+1 单元的内容为 30H。,;字变量DAT的内容为1234H,占用两个字节单元,34H 存放在低地址单元,12H 存放在高地址单元,下一个字单元即DAT+2单元的内容为5678H,仍是低字节存在低地址单元 。,这实际上是为数据分配存储单元,并把变量名作为该存储单元的名称。,数值表达式,(1),例5-15 STRING DB ABCD,;将 A 的 ASCII 码 41H 存在 STRING 字节单元,将 B、C、D的ASCII 码依次存放在后续单元(即 STRING+1 、STRING+2 和STRING+3 单元),* DW伪指令可以有两个字符组成的字符串分配一个字单元。,例5-16 STRING1 DW AB,;等价于STRING1 DW 4142H,ASCII字符串,可以用DB伪指令为ASCII字符串中的每一个字符分配一个字单元。,(2),?表达式,这是为数据项分配存储单元的一种方法,只是存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最终结果。,例5-17 RESULT DB ? ;预置一个字节单元,其值不定,(4) 重复定义子句DUP,利用重复定义子句DUP可以为若干个重复数据分配存储单元。,带DUP的表达式格式如下: n DUP (表达式),其中圆括号内的表达式是重复的内容,n 是重复次数。,(3),段定义伪指令,段定义伪指令用于将源程序划分成若干段,这些逻辑段按用途可分为代码段(用于存放程序)、数据段(用于存放数据)、堆栈段(用于堆栈操作)和附加段(附加的数据段)。,需要说明的是,并不是所有的程序都必须包含这四个逻辑段,有时只需要一个段或两个段。,格式:段名 SEGMENT 定位类型组合类型类别名 段名 ENDS,功能:把模块划分为若干个逻辑段。每个SEGMENT/ENDS可定义一个逻辑段。,3., SEGMENT后的三个参数一般来说可以任选,它们的含义、类型及功能如下:,定位类型表示将某段装入内存时,对段的起始边界的要求。合理选择定位类型能够在进行段和模块的定位时充分利用存储空间。它有以下四种选择:, PAGE: PARA: WORD: BYTE:,定位类型,(1),组合类型,用来在多模块连接时告诉连接程序本段和其他段的组合关系。,组合类型有以下几种:, NONE: PUBLIC: COMMON : STACK: AT表达式: MEMORY:,(2),类别,可以是任何合法的自定义符,必须用单引号括起来。连接程序只使其与同类别段发生关联,这些同类别段被依序放在连续存储区域内,但各段仍独立。,典型类别如:STACKCODE,(3),段寄存器说明伪指令,格式:ASSUME 段寄存器 :段名,段寄存器 :段名 功能:向汇编程序指示当前各段所用的段寄存器,设定段寄存器与段的对应关系。,注意: 本伪指令只是指示各逻辑段使用寄存器的情况,并没有对段寄存器内容进行装填。段寄存器的实际值(CS除外)还要由传送指令在程序中装填数据。 ASSUME伪指令也可以用来取消段寄存器与段之间的对应关系(用NOTHING),然后再建立新的对应关系。,4.,过程定义伪指令,过程是程序的一部分,它可以被程序调用。每次可调用一个过程,当过程中的指令执行完后,控制返回调用它的地方。过程的定义是用过程定义伪指令完成的。,格式: 过程名 PROC NEAR / FAR 过程体 RET 过程名 ENDP 功能:完成过程定义,在过程体中实现过程的操作功能,5.,注意, 过程名是自定义符,定义开始和结束时的过程名必须相同。 过程名有三个属性:段地址、偏移量和距离属性(NEAR或FAR),汇编程序在汇编时根据过程类型生成段内或段间的调用或返回指令代码。 在一个过程中,可以有多个RET指令。一个过程总是通过RET指令返回,RET常作为过程的最后一条指令。,【例5-20】 CODE SEGMENT APRC PROC NEAR ADD AX, BX APRC ENDP STAT: MOV AX, NOM CALL APRC CALL APRC CODE ENDS END STAT RET,模块定义及通信伪指令,汇编语言可以把程序划分成许多模块,并对每个模块独立地进行汇编和调试。,(1) 模块开始伪指令,格式:NAME 模块名 功能:指明程序模块的开始,并指出模块名。,模块名是自定义符,不能是系统保留字。若该项使用默认值,则取TITLE语句中的页标题6个字符;若没有TITLE语句,则取源程序文件名为模块名。,6.,模块结束伪指令(源程序结束伪指令),格式:END 启动标号或过程名 功能:END表示一个模块的结束。通知汇编程序源程序到此结束,并给出执行程序的入口位置。, END通常与模块开始伪指令NAME联合使用,当NAME缺省时,则END 只表示源程序的结束。 汇编处理时,一个模块就是一个独立的汇编单位,汇编处理只进行到模块结束语句END为止。,【例5-21】 START: MOV AX,DATA END START,(2),注意,定义公共符号名伪指令,格式: PUBLIC 符号名, 符号名可以是变量、符号常量、标号或过程名。 功能:由PUBLIC定义的符号名,可以被其他模块引用,即由其定义的符号名是公共符号名,可以被外部模块引用。,在一个模块中,同一个符号名只能被定义一次。,例如:PUBLIC ABC,ALFA,(3),注意,定义外部符号名伪指令,格式:EXTRN 符号名:类型, 符号名在其他模块中已由PUBLIC所定义。类型指的是符号名的类型,符号名的类型应与原模块中定义的类型一致。它们可以是: 内存变量型:BYTE、WORD、DWORD 过程型:NEAR、FAR 数值型:ABS 功能:定义本模块中将要引用的外部模块中的符号名,它们应在各自的模块中已用PUBLIC伪指令进行了定义。,在一个模块中,同一个符号名只能被定义一次。,【例5-22】 EXTRN ABC:BYTE,FLP:FAR,(4),注意,列表伪指令,(1) 格式控制伪指令,格式控制伪指令用于对源程序排版、加标题和子标题。,1) 自动排版(行数、列数),格式:PAGE 行,行字数 功能:打印列表文件时,规定页的行数和每行的字符数。,例如:PAGE 60,132 其中行取值10155(默认值为66),列取值60132(默认值为80)。,7.,建立标题,格式: TITLE 标题正文 SUBTTL子标题正文 功能: 在打印列表文件时,TITLE伪指令用来给源程序设置标题,以后每页的第一行都列出该标题(不超过60个字符)。SUBTTL伪指令实现每页打印标题后再打印子标题(字符数不限)。当SUBTTL不带正文时,表示取消前面规定的子标题。,2),列表控制伪指令,这些伪指令用于打开或关闭列表文件的输出。,格式: . LIST . XLIST % OUT 功能: . LIST 用于打开列表文件的输出。 . XLIST用于关闭列表文件的输出。 % OUT 可在汇编时显示接在其后的信息,以便了解汇编的过程。,(2),记录伪指令,(1) 记录定义,格式:记录名 RECORD 字段名:宽度=表达式 , 功能:用于定义一个记录。指明记录中字段的位长度及初值,并用记录名表示已定义的记录。,【例5-23】 表示一个学生情况的记录,设年龄占5位,性别占1位(1:男,0:女),身体状况占2位(00:健康,01:良好,10:一般,11:差),可定义为: STDRC RECORD YER:5,SEX:1=0,STT:2, 记录名、字段名必须存在,不可使用默认值。 各字段总和不能超过16位。 表达式的初值应取正整数。,8.,注意,记录存储单元分配及赋值,格式:记录变量名 记录名 功能:将字段值表中的各字段值赋给记录的各字段。,【例5-24】 TAN RECORD X:6,Y:4,Z:6 AP TAN BP TAN ,字段值表中缺省项的默认值为0。,(2),注意,此例在存储器中分配两个记录,每个记录为两个字节。,记录操作符,1) 取字段宽度操作符,格式:WIDTH 记录名或记录字段名 功能:用于返回该记录或记录字段的宽度(二进制位数)。,【例5-25】 MOV AL,WIDTH YER ;AL5 MOV BH,WIDTH SEX ;BH1 MOV AH,WIDTH STDRC ;AH8,(3),取字段位置操作符,格式: MASK 字段名 功能:返回一个8位或16位的二进制数。该字段所在的位为1,其他位为0,以确定该字段在记录中所在的字段的位置。,【例5-26】 MOV BL,MASK YER ;BL11111000 MOV AH,MASK SEX ;AH00000100,2),结构伪指令,结构伪指令是把多个数据定义语句组成一个结构,而把每一个数据定义语句称为一个结构字段,内存变量名称为字段名。,(1) 结构定义伪指令,格式:结构名 STRUC 字段名 数据定义语句 结构名 ENDS 功能:定义一个结构。它含有由数据定义语句所确定的数据结构,并引用结构名来代表这种结构。,【例5-27】 ABC STRUC A DB ? B DB ABC12 C DW 120 ABC ENDS,9.,结构及字段的引用,格式:结构变量名结构字段名 功能:通过引用结构变量名及其字段名来使用结构类型数据中的字段。,【例5-29】 MOV AL,SAA ;引用结构变量SA的A字段值,(3),条件汇编伪指令,条件汇编的主要作用是根据条件有选择地对程序汇编。,一般格式:IF 表达式 程序段1 ELSE 程序段2 ENDIF,功能:当条件为真时,对程序段1进行汇编,如有ELSE及程序段2则跳过;当条件为假时,跳过程序段1,对程序段2进行汇编(若有ELSE及程序段2)。,10., IF 表达式 功能:表达式值不为0,汇编程序段1,否则跳过。 IFE 表达式 功能:表达式值为0,汇编程序段1,否则跳过。 IFB 参数 功能: 参数为空格,汇编程序段1,否则跳过。(参数要用扩起) IFNB 参数 功能:参数不为空格,汇编程序段1,否则跳过。 IFIDN 参数1,参数2 功能:字符串参数1与字符串参数2相同,汇编程序段1,否则跳过。,有多种伪指令操作,下面介绍常用的几个:,条件汇编,其他伪指令,(1) 定位伪指令,格式:ORG 数值表达式 功能:指定在它之后的程序段或数据块所存放的起始地址的偏移量。,【例5-31】 ORG 0100H ;从0100H开始存放 ORG DS + 20 ;DS为当前地址,从此地址后20字节处开始存放,当无ORG伪指令时,从段首址开始存放程序或数据。,11.,注意,注释说明伪指令,格式:COMMENT 定界符 注释 定界符 功能:用于在程序中加入注释,即定界符间的内容全部为注释。,(2),宏指令,为了简化汇编语言源程序,可以把一些频繁出现的程序段定义为“宏指令”,1. 宏定义及其调用,宏定义的一般格式为: 宏指令名 MACRO 形参,形参, 宏体 ENDM,5.3,为了实现ASCII码和BCD码之间的相互转换,往往需要把AL中的内容左移或右移4位。设左移4位,可用下列指令序列实现: MOV CL,4 SAL AL,CL 若多次使用,则可用一条宏指令来代替,宏定义如下: SHIFT MACRO MOV CL,4 SAL AL,CL ENDM,【例5-32】,带参数的宏,【例5-34】 SHIFT MACRO X MOV CL,X SAL AL,CL ENDM, X是一个形式参数,这里代表移位次数。在调用时,可把实际要求的移位次数作为实际参数代入,如SHIFT 4,就可用实在参数4代替在宏定义体中出现的形式参数X,从而实现移位4次。若再引用一个形式参数:,SHIFTMACRO X,Y MOV CL,X SAL Y,CL ENDM,用形式参数Y来代替需要移位的寄存器,只要在调用时,把要移位的寄存器作为实际参数代入,就可以对任一个寄存器实现指定的左移操作。,2.,主要的宏操作伪指令,(1) 宏定义伪指令,格式: 宏指令名 MACRO 形参,形参, 宏体 ENDM,(2) 取消宏指令名伪指令,格式: PURGE 宏指令名 , 功能:用于注销若干宏定义。,(3) 重复伪指令,格式: REPT (表达式) 宏体 ENDM 功能:重复执行若干次宏体所包含的语句。其中执行的次数由表达式的值决定。,3.,汇编语言程序的结构,汇编语言源程序由语句序列组成,该语句序列应包括可执行指令组成的指令语句和对符号定义、分配存储单元、分段等一些伪指令语句。,此外,80X86微处理器系统的存储结构是分段式访问结构,这种结构是程序运行的基础。因此80X86汇编语言源程序通常具备数据段、代码段和堆栈段等。,5.4.1 汇编语言源程序的结构,5.4,汇编语言和DOS操作系统之间的接口,为保证用户程序执行完后能回到DOS,应采取两项措施:,将用户程序中主程序的一部分定义为FAR过程,其最后一条指令为RET 在代码段的主程序(即FAR过程)的开始处将PSP所在段的段基值DS(或ES)保存进栈,然后再将一个全0的字压入堆栈(PSP的段内偏移地址)。,5.4.2,DOS系统功能调用, MSDOS中常用的软中断有8条,系统规定它们的中断类型码为20H27H,它们各自的功能及入口/出口参数见表4-3。,5.5,INT 21H中断本身包含很多子程序,每个子程序对应一个功能,其编号从062H。调用它们时采用统一的格式如下:, 传送入口参数到指定寄存器中; 功能号送入AH寄存器; INT 21H。,常用的系统功能调用,1. 键盘输入单字符1号系统功能调用,使用格式如下: MOV AH,1 INT 21H,2. 键盘输入字符串0AH号系统功能调用,功能是将键盘输入的字符串写入到内存缓冲区中,因此必须事先定义一个缓冲区。,输出单字符2号系统功能调用,使用格式如下: MOV DL,A MOV AH,2 INT 21H 执行2号系统功能调用时,将置入DL寄存器中的字符A送屏幕显示。,3.,输出字符串9号系统功能调用,功能是将指定的内存缓冲区中的字符串在屏幕上显示出来,缓冲区的字符串以“DS ”为结束标志。使用格式如下:,BUF DB GOOD BYEDS MOV DX,OFFSET BUF MOV AH,9 INT 21H ;在显示器屏幕上显示GOOD BYE,4.,使用格式如下: MOV AH,4CH INT 21H 它没有入口参数,执行结果是结束当前正在执行的程序,并返回DOS操作系统。,返回操作系统4CH号系统功能调用,5.,直接控制台输入/输出单字符6号系统功能调用,如果DL=0FFH,则表示是从键盘输入单字符送AL寄存器;如果DL0FFH,则表示是将DL寄存器中的内容送屏幕显示输出。它们的使用格式如下: MOV DL,0FFH MOV AH,6 INT 21H ;键盘输入单字符送AL MOV DL,A MOV AH,6 INT 21H ;将DL中的字符A送屏幕显示,6.,从串口输入单字符3号系统功能调用,使用格式如下: MOV AH,3 INT 21H 它没有入口参数,系统将从异步通信口串行输入的字符置入AL寄存器中。,使用格式如下: MOV DL,DS MOV AH,4 INT 21H 执行时将DL寄存器中的字符通过异步通信口串行输出。为节省篇幅,不再赘述其他的系统功能调用,需要时请参阅附录B。,8. 向串口输出单字符4号系统功能调用,7.,汇编语言程序设计,5.6.1 程序设计步骤,程序是计算机命令的有序集合,用计算机求解某些问题时往往需要编制程序,其设计步骤归纳如下:,(1)分析问题 (2) 建立数学模型 (3) 确定算法 (4) 绘制程序流程图 (5) 内存空间分配 (6) 编制程序与静态检查 (7) 程序调试,5.6,汇编语言程序设计方法,1. 简单程序设计,简单程序,又称为顺序程序。这种程序的形式最简单,计算机执行程序的方式是“从头到尾”,逐条执行指令语句,直到程序结束,这是最基本的形式,任何程序都离不开这种形式。 在汇编语言程序中简单程序主要由数据传送指令、算术运算指令和逻辑运算指令组合而成。,5.6.2,2. 分支程序设计,分支程序可以有两种形式:简单分支结构和多分支结构。其中简单分支结构有两种,相当于高级语言中的IFTHEN和IFTHENELSE结构;多分支结构则相当于高级语言中的DO-CASE结构。它们的流程图如图4-3所示。,【例5-38】 比较两个无符号数的大小。 在A和B单元各有一个8位无符号数,要求比较这两个无符号数,并根据比较结果在屏幕上显示AB或BA(假设这两个数不相等)。 分析:首先使用比较指令比较两个无符号数的大小,然后根据标志位,使用无符号数转移指令实现转移。其程序流程图如图5-4所示。,简单分支程序设计,(1),(2) 多分支程序设计,3.,(1) 循环程序的结构与组成,循环程序设计,1) 循环的初始化部分。,2) 循环工作部分。,3) 循环控制部分。,4) 循环结束部分。,(2) 循环控制方法,1) 计数法,2) 条件控制法,(3) 多重循环,图5-6 给出了二重循环程序的结构框图。,子程序设计,子程序相对主程序而言,是一个子的程

温馨提示

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

最新文档

评论

0/150

提交评论