ii-汇编语言程序设计

上传人:san****019 文档编号:70866103 上传时间:2019-01-18 格式:PPT 页数:77 大小:795.81KB
返回 下载 相关 举报
ii-汇编语言程序设计_第1页
第1页 / 共77页
ii-汇编语言程序设计_第2页
第2页 / 共77页
ii-汇编语言程序设计_第3页
第3页 / 共77页
ii-汇编语言程序设计_第4页
第4页 / 共77页
ii-汇编语言程序设计_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《ii-汇编语言程序设计》由会员分享,可在线阅读,更多相关《ii-汇编语言程序设计(77页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计,黄景涛 河南科技大学 电子信息工程学院,Email: Q&A: 自动化教研室(西苑10-316); 周四晚7:008:00.,2,汇编语言程序设计,汇编语言源程序格式及其开发过程 指令格式及寻址方式 8086汇编语言的基本语法 顺序、分支、循环结构程序设计 子程序设计 宏汇编简介,3,汇编语言基本概念,基本概念 汇编语言:是一种面向机器的程序设计语言,它是机器语言的符号化描述。 特点:代码短、空间省、效率高 汇编语言源程序:用汇编语言编写的程序 目标程序:汇编语言经翻译程序翻译成的代码程序(即机器语言的程序)。 汇编程序:把源程序转变为相应目标程序的翻译程序,4,汇编语言基本

2、概念,宏汇编:不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。 汇编语言程序的开发过程 编写源程序:EDIT(DOS),TextPad(Windows) 将源程序保存为 XXXX.asm 文件 使用MASM生成目标程序 XXXX.OBJ 使用LINK生成可执行程序 XXXX.EXE,5,汇编语言基本概念,汇编程序设计过程: 分析问题; 确定算法; 编写程序; 检验程序; 编写说明文件。,源程序的编辑、调试 用文本编辑器进行源代码的编写,文件保存后缀为ASM C:*masmmasm example.asm C:*masmlink example.obj

3、 C:*masmexample,6,汇编语言基本概念,基本汇编语言程序实例,(1) DATA SEGMENT (2) String DB program ASM,$ (3) DATA ENDS (4) CODE SEGMENT (5) ASSUME CS:CODE, DS:DATA, SS:STACK (6) START: MOV AX,DATA (7) MOV DS,AX (8) MOV DX,OFFSET String (9) MOV AH,9 (10) INT 21H (11) MOV AX,4C00H (12) INT 21H (13) CODE ENDS (14) STACK SEG

4、MENT STACK (15) DB 256 DUP(?) (16) STACK ENDS (17) END START,AH = 9 功能:显示字符串 DS:DX = 串地址 字符串以“$”结尾,AH = 4C 功能:带返回码终止 AL = 返回码,7,汇编语言中的语句,指令性语句 源程序经汇编后生成机器码 指示性语句 汇编过程中不产生机器码,在汇编过程中起解释说明作用 宏语句 由宏汇编定义的宏引用语句,8,汇编语言中的语句,指令性语句 指令性语句格式 标号: 前缀 指令助记符 操作数,操作数;注释 标号:代表“:”后面语句的存储地址,供转移指令(JMP)、转子指令(CALL)、循环指令(L

5、OOP)等使用。 由字母、数字组成串(第一个字符非数字) 前缀:是与串操作运算(MOVS、CMPS、SCAS、LODS、STOS)以及总线封锁指令(LOCK)配合使用的部分。它们是REP、REPZ、REPE、REPNZ、REPNE等等。 LOOP1: REP MOVS DEST, SOURCE 操作数的数目可以为0,1或2,用“,”隔开,9,数据传送指令(14条),汇编语言中的语句,10,算术运算指令(20条),汇编语言中的语句,11,- 逻辑运算指令(13条),汇编语言中的语句,12,串操作指令(10条),汇编语言中的语句,13,控制转移指令(28条),汇编语言中的语句,14,处理器控制指令

6、(12条),汇编语言中的语句,15,指示性语句 功能:对程序的起止信息、分段情况、变量说明、内存结构等进行说明。 格式: 名字 伪操作指令 参数,参数 ;注释 PC宏汇编的伪指令 段定义伪指令:SEGMENT,ENDS,ASSUME,ORG等 符号定义伪指令:EQU,= 数据定义伪指令:DB,DW,DD,DQ,DT 过程定义伪指令:PROC,ENDP 宏处理伪指令:MACRO,REPT,IRPC 条件汇编伪指令:IF,ENDIF,IFDIF,IFDEF,汇编语言中的语句,16,每个语句由14个部分组成,其格式是: 标号 指令助记符 操作数 ;注释 标识符:给指令或某一存储单元地址所起的名字。

7、可由下列字符组成: 字母:A z ; 数字:0 9 ; 特殊字符:?、 、一、$ 。 数字不能作标识符的第一个字符,而圆点仅能用作第一个字符; 标识符最长为31个字符; 当标识符后跟冒号时,表示是标号。它代表该行指令的起始地址; 当标识符后不带冒号时,表示变量; 伪指令前的标识符不加冒号。 指令助记符:表示不同操作的指令,可以是8086的指令助记符,也可以是伪指令。 操作数: 指令执行的对象。依指令的要求,可能有一个、两个或者没有。 注释:该项可有可无,是为源程序所加的注解,用于提高程序的可读性。,汇编语言语句格式及组成,17,常量与数值表达式 常量 在汇编时已经确定的值。在指令中作为直接操作

8、数,或者给变量赋初值 类型 数值常量:以数值的形式直接写在语句中 符号常量:预先为它定义一个名字,然后在语句中用名字来表示该常量(提高程序的可读性) 用 EQU 或 = 来定义 例:PORT EQU 83H ALPHT = 35*21,汇编语言语句格式及组成,18,各种形式常量的格式,汇编语言语句格式及组成,19,标号 标号是为一组机器指令所起的名字,用于程序转移指令、调用指令和循环指令的操作数(转向地址),一般在CS段内定义和使用。 标号的属性:段属性、偏移属性和类型 标号所处的代码段的段基址,称为该标号的段属性 标号所处的位指向对于段首地址的相对地址,称为该标号的偏移属性 形式一:标号 形

9、式二:OFFSET 标号,LC1: MOV AL, 20H JMP LC1,MOV BX, OFFSET LB1,汇编语言语句格式及组成,20,汇编语言语句格式及组成,标号: 标号有FAR(远标号)和NEAR(近标号)两种类型 近标号:该标号的定义在本段;在机器指令助记符之前,加一标号名字,后面紧跟一个冒号 “ :” LC1: MOV AL, 20H JMP LC1 远标号:该标号的定义在其它段;过程定义时,为过程起的名字也是标号,可作为转子指令的操作数,这类标号的类型在定义子过程时确定 PROP PROC FAR PROP ENDP,21,注:标号在使用时注意事项 (1)循环指令、条件转移指

10、令只能引用NEAR型, 并且定义标号语句和使用标号语句的相对距离只能在 128 +127 字节范围内 (2)无条件转移指令、调用(转子)指令可引用 NEAR 和 FAR 两种类型的标号 (3)如果同一段内,无条件转移指令语句到定义该标号语句的距离在 128 +127 字节范围内,则可在使用的标号前指定为短标号:记为 SHORT 标号,汇编语言语句格式及组成,22,变量变量的定义及格式 变量是内存中一个数据区的名字,可以作为指令的存储器操作数来引用 变量定义的格式: 变量名 变量类型定义符 表达式 ,,变量名:由用户定义(符合标识符定义的规范),变量类型: DB: 1个字节 DW: 2个字节,即

11、1个字 DD: 4个字节,即2个字 DQ: 8个字节,即4个字 DT: 10个字节,即5个字,汇编语言语句格式及组成,23,表达式操作数和运算符组成的式子 算术运算符:+,-,*,/ 逻辑运算符:NOT, AND, OR, XOR 关系运算符: EQ - 相等 NE - 不相等 LT - 小于 GT - 大于 LE - 小于或等于 GE - 大于或等于,汇编语言语句格式及组成,24,例: ARRAY DW 1, 2, 3 ADD SI, TYPE ARRAY,汇编的结果为 ADD SI, 2,分析运算符TYPE,LENGTH,SIZE,SEG,OFFSET TYPE 格式: TYPE 变量或标

12、号 说明: 变量:则汇编程序将回送该变量类型包含的字节数 标号:则汇编程序将回送代表该标号类型的数值。 NEAR(-1)、FAR(-2),汇编语言语句格式及组成,25,例: FEES DW 100 DUP (0) MOV CX, LENGTH FEES,则汇编结果为: MOV CX, 100,例: ARRAY DW 1, 2 MOV CX, LENGTH ARRAY,则汇编结果为: MOV CX, 1,LENGTH 格式: LENGTH 变量 说明: 回送分配给该变量的单元数,表达式中带DUP 时有效,非 DUP 时,回送1,汇编语言语句格式及组成,例: ARRAY DW 1, 2, 3 MO

13、V CX, SIZE ARRAY,则汇编结果为: MOV CX, 2,SIZE 格式:SIZE 变量 说明:回送分配给该变量的字节数,此值是LENGTH 值和 TYPE 值的乘积,26,例: MOV BX, OFFSET OPR 则汇编程序将OPR的偏移地址回送给指令,在执行时,将该偏移地址装入BX寄存器中,OFFSET 格式:OFFSET 变量或标号 说明:回送该变量或标号的偏移地址值,汇编语言语句格式及组成,例: MOV BX, SEG OPR 则汇编程序将OPR所在的段基址送入BX寄存器,SEG 格式:SEG 变量或标号 说明:回送该变量或标号的段地址,27,汇编语言语句格式及组成,属性

14、操作符PTR, THIS I. PTR 格式:类型 PTR 表达式 类型:BYTE, WORD, DWORD, FAR, NEAR 表达式:是存储器操作数 说明:用来给已分配的存储地址赋予另一种属性,使该地址具有另一种类型,例: MOV BX, 5,MOV BYTE PTR BX, 5 MOV WORD PTR BX, 5,例: VARW DW 2030H,4080H; VARW由DW定义为字类型 MOV AL, BYTE PTR VARW; 该指令由PTR改变VARW属性,28,汇编语言语句格式及组成,THIS指定属性操作符 格式:THIS 类型(BYTE, WORD, DWORD, FAR

15、, NEAR) 功能:用于指定存储器操作数或地址的类型属性。 说明: 该操作符对应的语句放在数据变量定义伪指令或标号定义之前; 规定一个新变量(标号)的属性; 由THIS定义的新变量(标号)的段地址和偏移地址与紧跟其后定义的变量(标号)的段地址和偏移地址相同,即指向同一个存储单元,但数据类型可以不同 一般通过EQU伪指令为符号命名赋予一个由THIS指定的类型 例: FIRST_BYTE EQU THIS BYTE WORD_TABLE DW 3275H,08ABH 例: TAB EQU THIS FAR MOV AX,1234H; 定义标号TAB,属性为FAR,指向MOV AX,1234H,29,指示性语句(说明性语句) 存储分配(数据定义)语句 数值表达式 如 3*20 ? 保留存储空间但不存入数据 例: ABC DB 0, ?, ?, 0 DEF DW ?, 52 存储空间分配如图所示 ASCII字符串 例: MESSAGE DB HELLO 存储空间分配如图所示,伪指令,30,N DUP (?) 重复因子n为正整数,表示数据项重复n次 例: ARRAY1 DB 2 DUP (0, 1, 2, ?) ARRAY2 DB 100 DUP (?) 内存分配如图所示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号