微机原理课件-20134汇编_第1页
微机原理课件-20134汇编_第2页
微机原理课件-20134汇编_第3页
微机原理课件-20134汇编_第4页
微机原理课件-20134汇编_第5页
免费预览已结束,剩余35页可下载查看

付费下载

下载本文档

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

文档简介

1、1第 4 章汇编语言程序设计2语句的构成nameoperationoperand ment标识符操作符操作数;注释 标识符:字母、数字、特殊字符( ? _ $) 31可以是标号或变量,它们均代表符号地址。 操作符:指令、伪指令和宏指令的助记符。 操作数:由0个或多个组成,之间用“,”分开,可以是常数,寄存器数、存储器数或表达式。 注释项:用来说明一段或一句指令的功能,前加“;”基本定义语句举例:sbuffer db I am a student! mov ds , ax34.1 汇编源程序的格式基本定义 汇编源程序是分段的,可定义4种类型的段:数据段、代码段、堆栈段、附加段,每个段有一个段名,

2、以符号SEGMENT开始,以语句ENDS结束,这两者都要有名字,且名字必须相同。 汇编源程序可以由若干个段组成,整个源程序以语句END结束。 源程序中,代码段是必不可少的,其他段可以定义0个或多个。44.1 汇编源程序举例说明STACK SEGMENT PARA STACK DB 100 DUP(?)STACK ENDSDATA SEGMENT STRING DB HELLO!,$DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS, AX5MOV AX, STACKMOV SS, A

3、X LEA DX, STRINGMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDS END START 4.1汇编源程序举例说明6汇编源程序的执行一、汇编源程序 编写汇编源程序,后缀名为.ASM。文本编辑软件:记事本、EDIT等软件。二、汇编程序产生目标文件将汇编语言源程序翻译成机器语言编写的目标程序,并可输出列表文件。检查语法并给出错误信息展开宏指令 常用汇编工具: ASM 和 MASM 7源程序.ASM输 入汇编程序MASM 翻 译目标代码(.OBJ)列表文件(.LST)交叉索引文件(.CRF)输 出汇编源程序的执行三、连接产生可执行文件 用连接程序

4、LINK对*.OBJ进行连接, 产生可执行 文件*.EXE; 查找库文件(LIB文件)可以产生一个映像文件(MAP文件) 四、执行、调试可执行文件 *.EXE 调试工具:DEBUG DEBUG程序是专为汇编语言设计的一种调试程序。 DEBUG程序的主要命令 U 命令:反汇编 D 命令:显示内存内容 A 命令:输入指令语句 G 命令:运行命令 T 命令:单步执行 E 命令:从指定的地址起编辑存储单元中的数据 B 命令:断点设置 GB命令:带断点连续运行程序 R 命令:寄存器内容显示与修改 Q 命令:退出DEBUG汇编源程序的执行94.2 汇编语言基本语法基本定义一、字符集 字母、数字和特殊字符二

5、、常量 数字常量:以各种数制形式出现,二进制、十进制、十六进制、八进制 字符串常量:单引号三、保留字 指令助记符、寄存器名、伪指令助记符等四、标识符 变量、标号、段名、过程名104.2 汇编语言基本语法基本定义五、表达式(1)算术运算符 仅允许整数为操作数,+,-,*,/,和MOD(取模)(2)逻辑运算符 AND、 OR、 XOR、 NOT运算符,只能对常数进行运算(3)关系运算符 两个无符号数进行大小关系比较,若关系满足则返回全1,否则返回全0 相等EQ,不等NE,小于LT,大于GT,小于等于LE,大于等于GE11五、表达式(4)分析运算符 分析运算符对单个操作数进行属性分解,包括:SEG、

6、OFFSET、TYPE、LENGTH、SIZE SEG:取变量或标号的段地址 OFFSET:取变量或标号的偏移地址 TYPE:取变量的类型,返回变量的长度;取标号的类型,返回-1(NEAR)或-2(FAR) LENGTH:取变量中元素的个数 SIZE:取所定义存储区的字节数(TYPE*LENGTH)4.2 汇编语言基本语法基本定义12五、表达式(5)合成运算符 合成运算符对单个操作数重新生成段地址、偏移量相同而类型不同的新操作数 PTR: PTR BYTE PTR, WORD PTR, DWORD PTR NEAR PTR, FAR PTR PTR还可以用来进行强制类型转换 THIS: THI

7、S 4.2 汇编语言基本语法基本定义134.3 指示性语句8086语句指示性语句:伪指令指令性语句:指令每条语句与一条机器指令对应不产生机器指令功能的实现定义变量、分配存储单元、指示程序的开始和结束等144.3 指示性语句一、符号定义语句 EQU 等值语句格式: EQU 功能:把表达式的值赋给符号名。举例:NUMBER EQU 8 = 等号语句格式: TMP = 6功能:将符号TMP赋值为6。基本定义15 PURGE 解除语句格式: PURGE 符号1,符号2,符号3功能:解除对符号1、符号2、符号3的赋值。举例:PURGE NUMBER4.3 指示性语句EQU 和 = 的区别: EQU 定义

8、后的符号名(除非解除)不允许重复定义;= 对定义后的符号名可以重复定义。基本定义16 例: PORT1 EQU 3 ;PORT1=3 PORT2 EQU PORT1+2 ;PORT2=5 T1 EQU ADD ;定义T1与ADD同义 CONT EQU CX ;定义CONT与CX同义 N1=9 N1=6 ;重复定义N1,其值最终为6 PURGE PORT1 ;解除PORT1的赋值 PORT1 EQU 10 ;PORT1重新赋值为104.3 指示性语句应用举例174.3 指示性语句二、数据定义语句 字节 定 义: 符号 DB 表达式 字 定 义: 符号 DW 表达式 四字节定义: 符号 DD 表达

9、式 八 字 定义: 符号 DQ 表达式 十字节定义: 符号 DT 表达式数据定义184.3 指示性语句 、操作数是常数或表达式数据定义MY_DATA DB 10H, 4H, 27HMY_DATA100427012194.3 指示性语句 、操作数是常数或表达式(续)数据定义ARRAY DW 100H, -5, 3*20HARRAY0100FBFF0060012345204.3 指示性语句 、操作数是常数或表达式(续)数据定义注意事项: 数据定义中的数据默认值均为十进制; 数据定义不能超过伪指令的有效范围; 数据存放遵循“高位在高端”的原则。DATA DB 256 COUNT DB 12 ;循环1

10、2次MYNUM DW 1234H214.3 指示性语句 、操作数是字符串数据定义STRING DB GOOD !MYCHAR DW AB,CDSTRING012345474F4F442021MYCHAR012342414443224.3 指示性语句数据定义注意事项: 字符串必须用单引号括起来; 当定义的字符多余两个字符的字符串时, 只能使用DB伪指令。DATA1 DW ABCD 应改为:DATA1 DB ABCD 、操作数是字符串(续)234.3 指示性语句数据定义 、可保留空单元,操作数为“?”ABC DB 12,?,56ME DW ?,98,?MC DD 1248,?,0D123H、可用复

11、制操作符 DUPMY1 DB 2 DUP (0,1,2)MY2 DB 100 DUP (?)含义:将括号中的数重复n(165535)次。244.3 指示性语句数据定义 、表达式中的$,取当前地址TABLE DB 4 DUP(?)BUFFER DW TABLE, $+3表示缓存TABLE的地址,以及当前地址+3的地址25TABLE1 DD 0,1,2,3 TABLE2 DB 30H,31H,32H,33HTABLE3 DB 12345678910判断下列指令是否正确:1. MOV AX,TABLE1 2. MOV BX,TABLE23. MOV AL,TABLE34. MOV AX,WORD P

12、TR TABLE24.3 指示性语句课堂练习 请为XLAT指令定义一张表,以计算2n。264.3 指示性语句三、段定义语句主要伪指令有: SEGMENT 标志段开始。ENDS标志段结束。ASSUME让汇编程序知道源程序的段结构,并知道在各种指令执行时访问哪一个段。ORG设置存储单元的起始偏移地址。段定义27段名 SEGMENT 定位方式 连接关系 类别名 .段名 ENDS 4.3 指示性语句段定义(1)定位方式 指定段的起始地址边界,共4种。 PAGE(页边界地址) (能被256除) PARA(段边界地址) (能被16除,缺省项) WORD(字边界地址) (能被2除) BYTE(字节边界地址)

13、 (任意地址装入均可)28(2)连接关系 6种: PUBLIC STACK NONE COMMON MEMORY AT(3)类别名 是一个标志符,必须用单引号括起来,LINK根据连接关系把类别名相同的段连接在一起。4.3 指示性语句段定义NONE:表示本段于其它段无连接关系,本段有自己的段地址。缺省选项。PUBLIC:本段与同名段邻接在一起形成新段,该新段内所有段公用一个段基址,所有偏移量调整为相对新段地址的偏移量。COMMON:本段与其它COMMON类型的同名段形成一个覆盖段,所有同名段将具有相同的段基址,共享该覆盖段存储区。覆盖段长度取同名段中最长段的长度。STACK:本段与同名段连接成一

14、个连续段作为堆栈段,系统自动对段寄存器SS赋予该连续段的首址,并初始化堆栈指针寄存器SP。AT表达式:本段从表达式指定的地址(绝对地址)开始装入。MEMORY:本段定位于所有其它段之前(地址最高端),若有多个这样的段,则只对第一个MEMORY段这样定位,其它按PUBLIC类型处理。段定义中的连接关系303)定位伪指令: ORG 100H :指定起始偏移地址。DATA SEGMENT ORG 100H ;起始偏移地址 X DB12HDATA ENDS 默认情况从0000H开始存放数据。2)段说明: ASSUME :给各程序段指定段寄存器,但并不赋值。4.3 指示性语句段定义314.3 指示性语句

15、过程定义4) 过程定义伪指令 PROC 类型 RET ENDP 两种类型:NEAR:段内调用,默认类型; FAR: 段间调用 调用格式:CALL 5)汇编结束伪指令END END ;表达式为程序第1条指令的标号宏指令 为了简化汇编语言的书写,把一些频繁出现的程序段定义为“宏指令”。 在汇编过程中,将宏指令所代替的程序段汇编成相应的机器代码,并插入到源程序中宏指令要使用前: (1)宏定义 (2)宏调用 (3)宏扩展1.宏代换 格式:宏名 MACRO 形式参数1,形式参数1, ENDM 功能:为指令序列定义一个宏名,称为宏指令.2.局域符号定义语句 格式: LOCAL 符号符号1,符号2, 功能:

16、指出符号1,符号2,仅在宏代换中有意义. 3.删除宏定义语句 格式: PURGE 宏定义名1宏定义名2, 功能:注销程序中引用的宏指令.4.退出宏定义语句 格式:EXITM 宏指令5.重复定义语句: 格式: IRPC 形式参数,字符串 指令序列 ENDM6.包含语句: 格式: INCLUDE 文件名 ;把命令后的文件插入该语句处一起编译例:定义一条宏指令,完成算术左移. SHT MACRO X,Y MOV CL,X SAL Y,CL ENDM 宏调用: SHT 6,BL 经宏展开: MOV CL,6 SAL BL,CL 354.3 指示性语句段定义举例data segment a1 dw 3

17、a2 dw 2 sum dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,a1 add ax,a2 mov sum,axcode ends end start编程计算: 3+2并显示结果。温馨提示请体会思路!364.4 DOS和BIOS功能调用 DOS和BIOS系统功能调用:为用户提供一些常用的系统服务程序,主要是I/O设备使用与管理、文件管理和目录操作等,它们以中断服务子程序的方式呈现,通过使用INT N直接调用。 DOS和BIOS系统功能调用的不同:与DOS相比,BIOS是在更低的层次上为用户提供系统服务,因此,对于DOS和BIOS都可实现的功能来说,BIOS中断调用的移植性更差,但运行效率更高。374.4 DOS和BIOS功能调用 DOS系统功能调用方法: 设置该功能要求的入口参数; 将功能号送入AH中; 执行INT 21H; 分析返回的结果参数 DOS系统功能调用占用20H到27H的中断类型码,常用INT 21H 常用的DOS系统功能调用键盘功能与显示功能382. 从键盘输入字符串并回显(功能号AH=0AH) LEA DX, BUF MOV AH, 0AH INT 21H ;4.4 DOS和BIOS功能调用3. 向

温馨提示

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

评论

0/150

提交评论