《微机原理与应用》汇编语言程序设计(09年)

上传人:宝路 文档编号:48188417 上传时间:2018-07-11 格式:PPT 页数:140 大小:3.70MB
返回 下载 相关 举报
《微机原理与应用》汇编语言程序设计(09年)_第1页
第1页 / 共140页
《微机原理与应用》汇编语言程序设计(09年)_第2页
第2页 / 共140页
《微机原理与应用》汇编语言程序设计(09年)_第3页
第3页 / 共140页
《微机原理与应用》汇编语言程序设计(09年)_第4页
第4页 / 共140页
《微机原理与应用》汇编语言程序设计(09年)_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《《微机原理与应用》汇编语言程序设计(09年)》由会员分享,可在线阅读,更多相关《《微机原理与应用》汇编语言程序设计(09年)(140页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术术 主讲讲 易凡武汉汉大学物理学院电电子科学与技术术系第四章汇编语汇编语 言程序设计设计4.1 汇编语汇编语 言的基本概念n机器语语言用机器码码(二进进制码码)表示操作的程序语语言,与处处理器相关,可直接执执行,但难难懂,检查难检查难 ;4.1.1汇编语汇编语 言程序的一般概念n高级语级语 言 具有普适性的程序设计语设计语 言,功能强大,易编编写,易检查检查,与机器无关。n汇编语汇编语 言用多种助记记附表示多操作的语语言,面向机器,但易懂,易检查检查 ,机器不能识别识别4.1.1 汇编语汇编语 言程序的一般概念(续续)n汇编语汇编语 言源程序 用汇编语汇编语 言按一定格式编编

2、写的程序,它不能直接执执行。源 程序的属性为为ASMn目标标文件 将源程序经汇编经汇编 后转换转换 成的二进进制代码码的文件, 属性为为 OBJn执执行文件 经连经连 接后将目标标文件与库库文件或其它目标标文件连连接在一起 形成的可执执行的文件, 属性为为EXEn汇编汇编 将源程序转换转换 成目标标文件的翻译过译过 程n汇编汇编 程序完成完成汇编汇编汇编汇编 工作的程序工作的程序u汇编汇编 程序的主要功能检查检查 源程序; 测测出源程序中的语语法错误错误 ,给给出出错错信息;产产生目标标代码码程序, 并给给出列表文件(LST文件);展开宏指令;常用的汇编汇编 程序有小汇编汇编 ASM, 宏汇编

3、汇编 MASM, 以及TASM, TASMX, TASM32等4.1.2 上机的步骤骤 编辑编辑 建立ASM源程序; 将ASM文件经汇编经汇编 (MASM)转换转换 成OBJ文件; 将OBJ文件经连经连 接(LINK)转变转变 成EXE文件上机执执 行。LINK 连连接编辑编辑 源程序PROGR.ASM 文件PROGR.OBJ 文件PROGR.EXE 文件MASM 汇编汇编4.2 汇编语汇编语 言程序格式n指令语语句能产产生目标标代码码, CPU可以执执行, 完成特定功能的语语句, 由CPU指令组组成。n指示语语句(伪伪指令语语句)不产产生目标标代码码, 仅仅是为汇编为汇编 程序作指示的语语句

4、。n宏指令语语句是一个指令序列, 在汇编时汇编时 , 所有的宏指令语语句都被展开为为相应应的指令序列。4.2.1 汇编语汇编语 言语语句的类类型4.2.2 语语句的格式n语语句格式为为:名字 助记记符 操作数 ;注释释其中,助记记符项为项为 必要项项, 方括号项项为为可选项选项。u名字可为为作名字的字符有:字母AZ, 数字09, 字符? 、_、$等数字不能放在名字之首在指令语语句中,名字一般是标标号。伪伪指令语语句中,名字通常是变变量(名), 段名,过过程名等 标标号:是某指令代码码存放单单元的符号地址,标标号后必须须有一个冒号“:” 标标号的属性:段,偏移量,类类型(FAR,NEAR) 变变

5、量(名)某个存储储器中数据单单元或数据区的符号地址, 它代表数据单单元或数据区。 变变量有三种属性:段,偏移量,类类型(BYTE,WORD,DWORD,QWORD)4.2.2 语语句的格式u助记记符分为为指令助记记符和伪伪指令助记记符。u操作数指令操作的对对象。可作为为操作数的有:常量,寄存器,标标号,变变量和表达式。p常量:如立即数,直接寻寻址的地址,ASC码码字符串等p寄存器:AX,AH,DS,SP,DX等p表达式:是常数、寄存器、标标号、变变量与一些操作符相组组合的序列。分数字表达式和地址表达式两种。数字表达式产产生一个数值值结结果,地址表达式产产生一个地址。u; 注释项释项它不会被汇编

6、汇编 , 其功能为为增加源程序的可读读性。注释释前必须须加分号;4.2.2 语语句的格式(续续)4.2.3 操作符n算术术操作符(加) 、(减)、 (乘)、/ (除)、MOD (模除,即两个整数相除后取余数)例4.1MOV DX , BLOCK(61) 2 该指令语句等价于MOV DX , BLOCK10u算术术操作符应应用之例例4.2 数组ARRAY定义如下,试写出把数组长度(字数)存入CX寄存器的指令。ARRAYDW1, 2, 3, 4, 5, 6, 7ENDDW ?END是为计为计 算数组长组长 度而建立的符号地址。所需指令为:MOV CX , (ENDARRAY)/2汇编后计算表达式而

7、形成了指令MOV CX , 7n逻辑逻辑 运算操作符AND(逻辑逻辑 与)OR(逻辑逻辑 或), XOR(逻辑逻辑 异或)NOT(逻辑逻辑 非) 。它们们只能用于数字表达式中4.2.3 操作符(续续)例4.4AND DX , PORT_VAL AND 0FEH汇编PORT_VAL AND 0FEH 确定了外设端口号例4.3INAL , PORT_VALOUT PORT_VAL AND 0FEH , AL当端口号PORT_VAL为偶数时, 输出端口号与之相同; 当PORT_VAL为奇数时, 输出端口号比输入端口号小1u逻辑逻辑 运算操作符应应用之例n关系运算操作符EQ(等于)、NE(不等)、LT

8、(小于)、GT(大于)、 LE(小于或等于)、GE(大于或等于)参与关系运算操作的两个操作数必须须都同为为数字或为为同一段内的两个存储储器地址。计计算的结结果应为逻辑值应为逻辑值 :结结果为为真,表示为为FFFFH结结果为为假,表示为为04.2.3 操作符(续续)例4.5:MOV AX , 4 EQ 3; 结果为假等价于MOV AX , 0MOV AX , 4 NE 3; 结果为真等价于MOV AX , 0FFFFH例4.6 MOV BX , (PORT_VAL LT 5)AND 20) OR(PORT_VAL GE 5)AND 30)当 PORT_VAL 5时, 汇编结果为:MOV BX ,

9、 30否则,汇编结果为:MOV BX , 20u关系运算操作符应应用之例n分析运算符uSEG格式:SEG 变变量(名)功能:取变变量所在段的段基址p主要有:SEG , OFFESET , TYPE, SIZE , LENGTHuOFFST格式:OFFSET 变变量/标标号功能:取变变量或标标号的偏移地址u分析运算符应应用之例例4.8MOV DI , OFFSET DATA1 ;; (DI)DATA1的偏移地址例4.7MOV AX , SEG ARRAY; (AX)ARRAY的段基址MOV DS , AX ; (DS)(AX)n分析运算符(续续)表4.1 TYPE 类型值与类型的关系TYPE 类

10、类型值值存储储器操作数的类类型1 2 4 -1 -2BYTE WORD DWORD NEAR FARuTYPE格式:TYPE 变变量/标标号功能:取变变量或标标号的类类型值值例4.10 : VARDW ?; VAR为字变量 ARRAYDD 10 DUP(?);ARRAY为双字变量 STR DB THIS IS TEST ; STR为字节变量 MOVAX , TYPE VAR; (AX) 2 MOVBX , TYPE ARRAY; (BX) 4 MOVCX , TYPE STR; (CX) 1例4.9ARRAY DW 1 , 2 , 3 : ADDSI , TYPE ARRAY汇编后: ADDS

11、I , 2 u分析运算操作符应应用之例uLENGTH格式:LENGTH 变变量(名)功能:取重复定义义(DUP)的复制次数, 若不是DUP定义义,则则取数值值1。n分析运算符(续续)uSIZE格式:SIZE 变变量(名)功能:取LENGTH值值与TYPE值值的乘积积例4.13 若:FEES DW 100 DUP (?) 则TYPE FEES = 2LENGTH FEES = 100 SIZE FEES=(LENGTH FEES)(TYPE FEES)=1002=200 所以MOV CX , SIZE FEES 汇编后: MOV CX , 200例4.11 若: FEES DW 100 DUP

12、(?)对于指令:MOVCX , LENGTH FEES汇编后:MOVCX , 100例4.12 若:ARRAYDW 1 , 2 , 3 对于指令:MOVCX , LENGTH ARRAY 汇编后为: MOVCX , 1u分析运算操作符应应用之例n综综合运算符u属性运算符PTR格式:类类型 PTR 表达式功能:对对存储单储单 元赋赋予确定的类类型uTHIS运算符格式:名字 EQU THIS 类类型功能:给给名字(变变量或标标号)指定类类型,它的段,偏 移地址与下一存储单储单 元相同。u短程运算符SHORT格式:SHORT 标标号功能:指明标标号的类类型为为短标标号, 从标标号到引用 标标号指令之

13、间间的距离是在: -128127字节节范围围 内例4.15设已有数据定义如下 TWO_BYTEDW ? 可用以下语句对这两个字节赋予另一种类型定义 ONE_BYTEEQU BYTE PTR TWO_BYTE OTHER_BYTE EQU BYTE PTR (TWO_BYTE+1) OTHER_BYTE EQU BYTE PTR ONE_BYTE1ONE_BYTE与TWO_BYTE 皆为符号地址它们的段和偏移量属性相同,但类型属性不同,前者是 BYTE类型,后者是WORD类型。例4.14 INCBX; 操作数的类型不明确可用PTR操作符对操作数明确定义:INC WORD PTR BX ;明确字操

14、作数u综综合操作符应应用之例例4.16 FIRST_TYPEEQUTHIS BYTE WORD_TABLEDW100 DUP (?)FIRST_TYPE与WORD_TABLE的段,偏移地址均相同,但 前者是BYTE类型,后者是WORD类型。u综综合操作符应应用之例例4.17L1EQU THIS FAR L:MOV CX ,100L标号与L1标号的段、偏移地址一样,但类型不同。L是NEAR类型,L1是FAR类型,允许其他段的转移指令调 用。 例如 :JMP SHORT TAG TAG:u字节节分离运算符LOW、HIGH功能:分别别得一个数值值或地址表达式的低位和高 位字节节例4.18STUFFE

15、QU 0ABCDH语句:MOVAH , HIGH STUFF 汇编后: MOVAH , 0ABH语句:MOVAL , LOW STUFF 汇编后: MOVAL , 0CDHn综综合运算符4.3 伪伪指令语语句1. 数据定义伪义伪 指令语语句功能:定义变义变 量的类类型,分配空间间并赋赋初值值格式:变变量名 DB/DW/DD 操作数,操作数u变变量名是任选项选项 ,是数据单单元的符号地址u助记记符 DB、DW、DD DB(Define byte):定义变义变 量的类类型为为BYTE, 每个操作数占一个字节节1. 数据定义伪义伪 指令语语句u助记记符 DB、DW、DD DB(Define byte):定义变义变 量的类类型为为BYTE, 每个操 作数占一个字节节DW(Define word):定义变义变 量的类类型为为WORD,每个 操作数占2个字节节, 采用小端对对准方式存放DD(Define double word): 定义变义变 量的类类型为为 DWORD, 每个操作数占4个字节节u操作数的几种形式操作数为为常数,常数表达式或为为字符(串)操作数是“?”只定义义存储储空间间,但不预预存储储数据操作数是已定义义的变变

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

当前位置:首页 > 中学教育 > 教学课件

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