第4章8086汇编语言程序设计(1)汇编语言的语句.ppt_第1页
第4章8086汇编语言程序设计(1)汇编语言的语句.ppt_第2页
第4章8086汇编语言程序设计(1)汇编语言的语句.ppt_第3页
第4章8086汇编语言程序设计(1)汇编语言的语句.ppt_第4页
第4章8086汇编语言程序设计(1)汇编语言的语句.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 8086汇编语言程序设计,4-1 8086汇编语言的语句 4-2 8086汇编语言中的伪指令 4-3 8086汇编语言中的运算符 4-4 DOS功能调用,汇编语言程序上机调试过程概述,汇编语言程序:用汇编语言编写的、完成特定功能的指令序列。,汇编程序:把汇编语言编写的源程序翻译成机器码表示的目标程序的程序。,汇编语言程序到机器语言程序的转换过程称为汇编。 手工汇编:人工查指令表汇编。 机器汇编:用汇编程序进行汇编。,汇编语言程序上机调试过程:,在编辑程序(EDIT)的支持下,从键盘输入。,用汇编程序(MASM或ASM)进行汇编,完成语法检查和翻译。若语法无错,生成目的码文件(.OBJ)

2、,用连接程序(LINK)连接,若无错,生成可执行文件(.EXE),用调试程序(DEBUG)调试源程序,直至得到正确结果,注意:上机调试程序,必须具备四个工具: EDIT、MASM、LINK、DEBUG。,一个汇编语言程序通常包含两种语句:,指令性语句是计算机可执行的; 指示性语句不能执行,用来定义变量,分配存储单元,指示程序开始和结束等。,两种语句的差别: 形式上:带不带冒号,是否可转向它。 本质上:汇编时能否形成对应的机器码。,指令性语句 格式: 标号: 指令助记符 操作数 ;注释 指示性语句(伪指令) 格式: 名字 指示助记符 操作数 ;注释,4-1 8086汇编语言的语句,注释为便于阅读

3、程序而引入,不产生任何机器动作,往往可有可无,但注释前必须加分号(;)。,标号与一条指令的符号地址名相联系,可作为JMP和 CALL指令的目标操作数。,名字与指令的地址毫无关系,决不能转向它。,指令助记符规定了语句的操作功能,对应着8086指令系 统中的各种指令。,指示助记符规定语句的伪操作功能,即MASM86的各种伪指令。,操作数规定的是操作对象,由寄存器、存储单元、数据项或其表达式构成。,4-2 8086汇编语言中的伪指令,一、符号定义语句,例:CONSTANTEQU100 NEW_PORTEQUPORT_VAL+1,等值语句EQU 格式:符号名EQU表达式 或:新符号名EQU老符号名,等

4、号语句= 与EQU类似,但允许重新定义,例:EMP=7;值为7 EMP=EMP+1;值为8,注意:在同一源程序中,一个符号名用EQU只允许定义一次。,二、变量定义语句,变量是内存中数据区的名字,故这类伪指令又可叫数据定义伪指令。格式: 符号名 DB/DW/DD 表达式 其中被定义符号名就称为一个变量。 注意:符号名后面不能跟冒号(:)。,伪指令助记符: DB用来定义字节DW用来定义字DD用来定义双字,例1:DATA_BYTE DB 10,5,10H DATA_WORD DW 100H,100,-4 DATA_DW DD 2*30,0FFFBH,例2:表达式可以是字符串 MASTERLIDB H

5、ELLO 汇编后如下:,操作数?号用来保留存储空间,但不存入数据。 例3:ABC DB 0,1,?,?,? LPI DW ?,54,? 汇编后如下图示:,操作数字段还可以用复制操作符DUP来缩写。 如上面ABC亦可写成: ABCDB 0,1,3 DUP(?),又如: DO-2 DB 2 DUP(0,1,2,?) 与 DO-2 DB 0,1,2,?,0,1,2,?等价,三、段定义语句,段定义语句格式:段名SEGMENT 段名ENDS,注意: 这两个语句总是成对出现,二者前面的段名一致。 二者之间的删节部分: 对数据段、附加段及堆栈段,一般是符号、变量定义等伪指令。 对于代码段则是指令及伪指令。,

6、因8086存储器是分段的,这就需要有段定义语句。与段有关的语句有:SEGMENT、ENDS、ASSUME、ORG,此外,还必须明确段和段寄存器的关系,这可由段假设语句ASSUME来实现。 格式:ASSUME 段寄存器名:段名, 其中:段寄存器名必须是CS、DS、ES或SS中的一个, 段名则是由SEGMENT及ENDS定义的段名。,注意:ASSUME只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值。,ORG规定了段内的起始地址或偏移地址。 格式: ORG 表达式的值即为段内的起始地址或偏移地址,从此地址起连续存放程序或数据。,四、过程定义语句,在MASM中,过程含义和子程序

7、一样,一个过程可被其它程序调用,过程返回用RET指令。,格式:过程名 PROC NEAR或FAR RET 过程名 ENDP,属性:NEAR(不标为默认)在段内被调用; FAR可以被段外调用。,过程调用语句格式:CALL 过程名,五、源程序结束伪指令END,当汇编程序对源程序进行汇编过程中,如遇到END,得知源程序到此结束。,格式: END 表达式通常就是程序第一条指令的标号。,伪指令介绍到此结束。 说明:如下内容不作要求 SEGMENT伪指令中的有关定位类型、组合类型、类别 PUBLIC和EXTRN伪指令,一个源程序通常由若干个段组成,每个段均以SEGMENT开始,以ENDS结束。 每个段包含

8、若干语句,分指令语句与伪指令语句两种。 每条语句可由标识符、保留字、表达式等元素组成。,例:下为实现B2-4AC,并将结果送内存单元D的一个源程序实例。,DATA SEGMENT A DB9 B DB5 C DB4 D DB? DATA ENDS STACK SEGMENT DB 20H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX,MOV AL,A IMUL C MOV CL,2 SAL AX,CL MOV BX,AX MOV AL,B IMUL AL S

9、UB AX,BX MOV D,AX MOV AH,4CH INT 21H CODE ENDS END START,汇编语言子程序设计的一个实例:,4-3 8086汇编语言中的运算符,一、表达式,表达式是常量、寄存器、标号、变量与运算符构成的,分数字表达式和地址表达式两种。 汇编时对表达式进行计算后,可得到一个数值或一个地址。,二、常量、变量、标号, 字符串常量 用引号引起来的字符。 例:A,BCDE,汇编时被翻译成对应的ASCII码41H、42H、43H、44H、45H。,常量, 数字常量 二进制常量,以B结尾 十进制常量,以D结尾(或省略,汇编语言中默认) 十六进制常量,以H结尾,变量是指存

10、放在存储单元中的数据,可被程序改变。对变量的访问是通过变量名来实现的。因此,变量名被认为是变量的符号地址。,变量,变量有三种属性: 段 值变量定义所在段的段地址。 偏移量变量单元地址与段起始地址之间的位移量。 类 型有字节、字和双字三种。,标号,标号是指令存放单元的符号地址,可作为转移指令或CALL指令的转移地址。,标号也有三种属性: 段值总是在CS段寄存器中, 偏移量概念与变量同, 类型分NEAR和FAR两种。 NEAR:标号所在语句与转移指令或调用指令在同一码段内, 只需改变IP即可。 FAR: 标号所在语句与转移指令或调用指令不在同一码段内。 若没有对类型进行说明,默认为NEAR。,三、

11、运算符,例1:19/7的商是2,19 MOD 7则为5(余数),算术运算符 +、-、*、/、MOD,其中MOD表示除法运算后得到的余数。,例3:算术运算符也可以用于地址表达式。 LEA SI,SUM+3 表示变量SUM的地址加上3得到的和作为新存储器地址。,例2:算术运算符可以用于数字表达式。 MOV AL,2*7 汇编后为B0,0E,逻辑运算符(不作要求) AND、OR、XOR、NOT,只能用于数字表达式中。,关系运算符(不作要求) EQ(相等)、NE(不等)、LT(小于)、GT(大于)、 LE(小于或等于)、GE(大于或等于),例1:MOV AX,SEG STRI1 MOV DS,AX 将

12、变量STRI1所在段值取到DS中,例2:MOV SI,OFFSET STRI1 代表将变量STRI1处的地址偏移量取到SI中. 注意:它与 LEA SI,STRI1类似。,分析操作符 SEG,OFFSET,TYPE,SIZE、LENGTH。可以把存储器一些特征作为数值送回。,TYPE,SIZE、LENGTH (不作要求).,#3,类型操作符PTR 用来对存储单元规定类型,通常与伪指令BYTE,WORD等连起来使用。,例5:MOV BYTE PTR DI,0 MOV WORD PTRDI,0 而 MOV DI,0 ;类型不定,THIS操作符(不作要求),4-4 DOS功能调用(见P123),PC

13、DOS是IBM PC机的磁盘操作系统。 PCDOS不仅提供了许多命令让用户直接使用,而且还提供了一批子程序供用户直接调用。其中主要包括一些基本输入输出子程序(简称BIOS,被固化在ROM芯片中)。,DOS系统功能调用方法: 在AH中放功能调用号; 视调用功能的规定设置入口参数; 用INT 21H转入子程序入口; 按规定取得出口参数。,关于数据输入和输出,在此只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,一、DOS键盘功能调用,功能调用号:AH=01H 返回参数: AL=输入字符(ASC码),单字符输入,例:在交互式程序中需用户对一个提示做出应答。

14、GET_KEY:MOVAH,01H;等待键入字符 INT21H;结果在AL中 CMPAL,Y ;是Y? JZ YES ;是,转YES CMPAL,N ;是N? JZ NO ;是,转NO JNZGET_KEY;其它键返回,继续 ;等待输入 YES: NO: ,此功能调用能从键盘输入一串字符并把它存入用户定义的缓冲区。 功能调用号: AH=0AH 入口参数: DS:DX=输入字符串在内存中的首地址,多字符输入,若用户键入的字符数(包括回车符)大于定义的N1,机器铃响,且光标不再向右移动。N2由中断调用程序自动填入。 例:设在数据段定义: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段: LEA DX,STR1 MOV AH,0AH INT 21H,二、DOS显示功能调用,例: MOV AH,02H MOVDL,41H INT21H ;屏幕显示A,单字符输出(在屏幕上显示一个字符),功能调用号: AH=02H 入口参数: DL=字符(用ASCII码表示),例:显示输入字符串。 DATA SEGMENT MESS1 DB Input String: 0DH,0AH, $ DATA

温馨提示

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

评论

0/150

提交评论