《微机原理与应用》第4章汇编语言程序设计.ppt
《《微机原理与应用》第4章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《《微机原理与应用》第4章汇编语言程序设计.ppt(140页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术微机原理与接口技术主讲主讲 易凡易凡 武汉大学物理学院电子科学与技术系武汉大学物理学院电子科学与技术系第四章第四章汇编语言程序设计汇编语言程序设计4.1 4.1 汇编语言的基本概念汇编语言的基本概念n机器机器语言言用机器码(二进制码)表示操作的程序语言,与处理器相关,可用机器码(二进制码)表示操作的程序语言,与处理器相关,可直接执行,但难懂,检查难;直接执行,但难懂,检查难;汇编语言程序的一般概念汇编语言程序的一般概念n高级语言高级语言 具有普适性的程序设计语言,功能强大,易编写,易检查,具有普适性的程序设计语言,功能强大,易编写,易检查,与机器无关。与机器无关。n汇编语言汇
2、编语言用多种助记附表示多操作的语言,面向机器,但易懂,易检用多种助记附表示多操作的语言,面向机器,但易懂,易检查,机器不能识别查,机器不能识别4.1.1 4.1.1 汇编语言程序的一般概念(续)汇编语言程序的一般概念(续)n汇编语言源程序汇编语言源程序用汇编语言按一定格式编写的程序,它不能直接执行。源用汇编语言按一定格式编写的程序,它不能直接执行。源程序的属性为程序的属性为ASMASMn目标文件目标文件将源程序经汇编后转换成的二进制代码的文件将源程序经汇编后转换成的二进制代码的文件,属性为属性为OBJOBJn执行文件执行文件经经连连接接后后将将目目标标文文件件与与库库文文件件或或其其它它目目标
3、标文文件件连连接接在在一一起起形成的可执行的文件形成的可执行的文件,属性为属性为EXEEXEn汇编汇编将源程序转换成目标文件的翻译过程将源程序转换成目标文件的翻译过程n汇编程序汇编程序完成汇编工作的程序完成汇编工作的程序完成汇编工作的程序完成汇编工作的程序u汇编程序的主要功能程序的主要功能检查源程序源程序;测出源程序中的出源程序中的语法法错误,给出出出出错信息;信息;产生目生目标代代码程序程序,并并给出列表文件(出列表文件(LSTLST文件)文件);展开宏指令展开宏指令;常用的常用的汇编程序有小程序有小汇编ASMASM,宏宏汇编MASMMASM,以及以及TASMTASM,TASMXTASMX,
4、TASM32TASM32等等4.1.2 4.1.2 上机的步骤上机的步骤编辑建立建立ASMASM源程序;源程序;将将ASMASM文件文件经汇编(MASM)MASM)转换成成OBJOBJ文件;文件;将将OBJOBJ文件文件经连接接(LINKLINK)转变成成EXEEXE文件上机文件上机执行。行。LINK连接连接编辑编辑源程序源程序PROGR.ASM文件文件PROGR.OBJ文件文件PROGR.EXE文件文件MASM汇编汇编4.2 4.2 汇编语言程序格式汇编语言程序格式n指令指令语句句能产生目标代码能产生目标代码,CPU,CPU可以执行可以执行,完成特定功能的语句完成特定功能的语句,由由CPUC
5、PU指令组成指令组成。n指示指示语句(句(伪指令指令语句)句)不产生目标代码不产生目标代码,仅是为汇编程序作指示的语句。仅是为汇编程序作指示的语句。n宏指令宏指令语句句是一个指令序列是一个指令序列,在汇编时在汇编时,所有的宏指令语句都被展开为所有的宏指令语句都被展开为相应的指令序列。相应的指令序列。汇编语言语句的类型汇编语言语句的类型4.2.2 4.2.2 语句的格式语句的格式n语句格式句格式为:名字名字 助助记符符 操作数操作数 ;注;注释 其中,其中,助记符助记符项为必要项,项为必要项,方括号项方括号项 为可选项。为可选项。u 名字名字 可为作名字的字符有:字母可为作名字的字符有:字母AZ
6、,AZ,数字数字0909,字符字符?、_ _、$等等数字不能放在名字之首数字不能放在名字之首在指令语句中,名字一般是在指令语句中,名字一般是标号标号。伪指令语句中,名字通常是伪指令语句中,名字通常是变量变量(名名),段名段名,过程名等过程名等标号标号:是某指令代码存放单元的符号地址,标号后必是某指令代码存放单元的符号地址,标号后必须有一个冒号须有一个冒号“:”标号的属性:标号的属性:段,偏移量,类型(段,偏移量,类型(FARFAR,NEARNEAR)变量变量(名名)某个存储器中数据单元或数据区的符号某个存储器中数据单元或数据区的符号地址地址,它代表数据单元或数据区。它代表数据单元或数据区。变量
7、有三种属性:变量有三种属性:段,偏移量,类型段,偏移量,类型(BYTE(BYTE,WORDWORD,DWORDDWORD,QWORD)QWORD)4.2.2 4.2.2 语句的格式语句的格式u助助记符符分为指令助记符和伪指令助记符。分为指令助记符和伪指令助记符。u 操作数操作数 指令指令操作的对象。可操作的对象。可作为操作数作为操作数的的有:有:常量,寄存器,标号,常量,寄存器,标号,变量变量和表达式和表达式。p常量:常量:如如立即数立即数,直接寻址的地址直接寻址的地址,ASCASC码字符串码字符串等等p寄存器:寄存器:AXAX,AHAH,DSDS,SPSP,DXDX等等p表达式表达式:是是常
8、数、寄存器、标号、变量与一些操作符相组合的序列常数、寄存器、标号、变量与一些操作符相组合的序列。分数字分数字表达式和地址表达式两种。数字表达式产生一个数表达式和地址表达式两种。数字表达式产生一个数值值结果,地址结果,地址表达式产生一个表达式产生一个地址。地址。u;注释项注释项它不会被汇编它不会被汇编,其功能为增加源程序的可读性。注释前必须其功能为增加源程序的可读性。注释前必须加分号加分号;4.2.2 4.2.2 语句的格式(续)语句的格式(续)4.2.3 4.2.3 操作符操作符n算算术操作符操作符(加加)、(减减)、(乘乘)、/(/(除除)、MOD MOD(模除,即两个整模除,即两个整数相除
9、后取余数数相除后取余数)例例4.14.1MOVMOVDX,DX,BLOCKBLOCK(6(61)2 1)2 该指令语句等价于该指令语句等价于MOVMOVDX,DX,BLOCKBLOCK1010u算算术操作符操作符应用之例用之例例例4.2 4.2 数数组组ARRAYARRAY定定义义如如下下,试试写写出出把把数数组组长长度度(字字数数)存存入入CXCX寄存器的指令。寄存器的指令。ARRAYARRAYDWDW1,2,3,4,5,6,71,2,3,4,5,6,7ENDEND DW DW?ENDEND是为计算数组长度而建立的符号地址。是为计算数组长度而建立的符号地址。所需指令为所需指令为:MOV CX
10、,MOV CX,(END(ENDARRAY)/2ARRAY)/2汇编后计算表达式而形成了指令汇编后计算表达式而形成了指令MOV CX,MOV CX,7 7n逻辑运算操作符运算操作符ANDAND(逻辑与与)OROR(逻辑或或),),XORXOR(逻辑异或异或)NOTNOT(逻辑非非)。它们只能用于数字表达式中它们只能用于数字表达式中4.2.3 4.2.3 操作符(续)操作符(续)例例4.44.4ANDANDDX,PORT_VAL DX,PORT_VAL ANDAND 0FEH 0FEH汇编汇编PORT_VAL AND 0FEH PORT_VAL AND 0FEH 确定了外设端口号确定了外设端口号
11、例例4.34.3ININAL,PORT_VALAL,PORT_VALOUTOUTPORT_VAL PORT_VAL ANDAND 0FEH,AL 0FEH,AL当端口号当端口号PORT_VALPORT_VAL为偶数时为偶数时,输出端口号与之相同;输出端口号与之相同;当当PORT_VALPORT_VAL为奇数时为奇数时,输出端口号比输入端口号小输出端口号比输入端口号小1 1u逻辑运算操作符运算操作符应用之例用之例n关系运算操作符关系运算操作符EQEQ(等于)、(等于)、NENE(不等)、(不等)、LTLT(小于)、(小于)、GTGT(大于)(大于)、LELE(小于或等于)、(小于或等于)、GEG
12、E(大于或等于)(大于或等于)参与关系运算操作的两个操作数必须都同为数字或为同一参与关系运算操作的两个操作数必须都同为数字或为同一段内的两个存储器地址。段内的两个存储器地址。计算的结果应为逻辑值:计算的结果应为逻辑值:结果为真,表示为结果为真,表示为FFFFHFFFFH结果为假,表示为结果为假,表示为0 04.2.3 4.2.3 操作符(续)操作符(续)例例4.54.5:MOV AX,MOV AX,4 EQ 34 EQ 3;结果为假结果为假等价于等价于MOV AX,MOV AX,0 0MOV AX,MOV AX,4 NE 34 NE 3;结果为真结果为真等价于等价于MOV AX,MOV AX,
13、0FFFFH0FFFFH例例4.6 4.6 MOV BX,MOV BX,(PORT_VAL LT 5)AND 20)OR(PORT_VAL LT 5)AND 20)OR (PORT_VAL GE 5)AND 30)(PORT_VAL GE 5)AND 30)当当 PORT_VAL5PORT_VAL5时时,汇编结果为汇编结果为:MOV BX,30MOV BX,30否则,汇编结果为:否则,汇编结果为:MOV BX,20MOV BX,20u关系运算操作符关系运算操作符应用之例用之例n分析运算符分析运算符uSEGSEG格式:格式:SEGSEG 变量量(名名)功能:功能:取取变量所在段的段基址量所在段的
14、段基址p主要有:主要有:SEG,OFFESET,TYPE,SIZE,LENGTHSEG,OFFESET,TYPE,SIZE,LENGTHuOFFSTOFFST格式:格式:OFFSET OFFSET 变量变量/标号标号功能:功能:取变量或标号的偏移地址取变量或标号的偏移地址u分析运算符分析运算符应用之例用之例例例4.84.8MOV DI,MOV DI,OFFSETOFFSET DATA1DATA1 ;;(DI)DATA1;(DI)DATA1的偏移地址的偏移地址例例4.74.7MOV AX,MOV AX,SEGSEG ARRAYARRAY;(AX);(AX)ARRAYARRAY的段基址的段基址MO
15、V DS,AX MOV DS,AX;(DS);(DS)(AX)(AX)n分析运算符(分析运算符(续)表表4.1 TYPE 4.1 TYPE 类型值与类型的关系类型值与类型的关系TYPE TYPE 类型值类型值存储器操作数的类型存储器操作数的类型1 12 24 4-1-1-2-2BYTEBYTEWORDWORDDWORDDWORDNEARNEARFARFARuTYPETYPE格式:格式:TYPETYPE 变量变量/标号标号功能:功能:取变量或标号的类型值取变量或标号的类型值例例4.10:4.10:VARVAR DWDW?;VAR;VAR为字变量为字变量ARRAYARRAYDDDD 10 DUP(
16、?)10 DUP(?);ARRAY;ARRAY为双字变量为双字变量STRSTR DB DB THIS IS TEST THIS IS TEST;STR;STR为字节变量为字节变量 MOVMOV AX,AX,TYPETYPE VARVAR;(AX)2;(AX)2MOVMOV BX,BX,TYPETYPE ARRAYARRAY;(BX)4;(BX)4MOVMOV CX,CX,TYPETYPE STRSTR;(CX)1;(CX)1例例4.94.9ARRAYARRAYDWDW 1,2,3 1,2,3:ADDADDSI,SI,TYPETYPE ARRAY ARRAY汇编后:汇编后:ADDADDSI,2
17、SI,2 u分析运算操作符分析运算操作符应用之例用之例uLENGTHLENGTH格式:格式:LENGTH LENGTH 变量(名)量(名)功能:功能:取重复定取重复定义(DUPDUP)的复制次数的复制次数,若不是若不是DUPDUP定定义,则取数取数值1 1。n分析运算符(分析运算符(续)uSIZESIZE格式:格式:SIZESIZE 变量(名)变量(名)功能:功能:取取LENGTHLENGTH值与值与TYPETYPE值的乘积值的乘积例例4.13 4.13 若:若:FEESFEESDW 100 DUP(?)DW 100 DUP(?)则则TYPETYPEFEES=2FEES=2 LENGTHLEN
18、GTH FEES=100 FEES=100 SIZESIZE FEES=(FEES=(LENGTHLENGTH FEES)(FEES)(TYPETYPE FEES)=1002=200 FEES)=1002=200所以所以MOV CX,MOV CX,SIZESIZE FEES FEES汇编后汇编后:MOV CX,200MOV CX,200例例4.11 4.11 若若:FEESFEESDW 100 DUP(?)DW 100 DUP(?)对于指令对于指令:MOVMOVCX,CX,LENGTHLENGTH FEES FEES汇编后汇编后:MOVMOVCX,100CX,100例例4.12 4.12 若若
19、:ARRAYARRAY DW 1,2,3DW 1,2,3对于指令对于指令:MOVMOVCX,CX,LENGTHLENGTH ARRAY ARRAY汇编后为:汇编后为:MOVMOVCX ,1CX ,1u分析运算操作符分析运算操作符应用之例用之例n综合运算符合运算符u属性运算符属性运算符PTRPTR格式:格式:类型型 PTRPTR 表达式表达式功能:功能:对存存储单元元赋予确定的予确定的类型型uTHISTHIS运算符运算符格式:格式:名字名字 EQU THISEQU THIS 类型类型功能:功能:给名字给名字(变量或标号变量或标号)指定类型,它的段,偏指定类型,它的段,偏移地址与下一存储单元相同。
20、移地址与下一存储单元相同。u短程运算符短程运算符SHORTSHORT格式:格式:SHORTSHORT 标号标号功能:功能:指明标号的类型为短标号指明标号的类型为短标号,从标号到引用标从标号到引用标号指令之间的距离是在:号指令之间的距离是在:-128-128127127字节字节范围内范围内例例4.154.15设已有数据定义如下设已有数据定义如下TWO_BYTETWO_BYTEDW DW?可用以下语句对这两个字节赋予另一种类型定义可用以下语句对这两个字节赋予另一种类型定义ONE_BYTEONE_BYTEEQU BYTE PTR TWO_BYTEEQU BYTE PTR TWO_BYTEOTHER_
21、BYTE EQU BYTE PTR (TWO_BYTE+1)OTHER_BYTE EQU BYTE PTR (TWO_BYTE+1)OTHER_BYTE EQU BYTE PTR ONE_BYTEOTHER_BYTE EQU BYTE PTR ONE_BYTE1 1ONE_BYTEONE_BYTE与与TWO_BYTE TWO_BYTE 皆为符号地址皆为符号地址它们的段和偏移量属性相同,但类型属性不同,前者是它们的段和偏移量属性相同,但类型属性不同,前者是BYTEBYTE类型,后者是类型,后者是WORDWORD类型。类型。例例4.144.14 INCINCBXBX;操作数的类型不明确操作数的类型
22、不明确可用可用PTRPTR操作符对操作数明确定义:操作符对操作数明确定义:INC WORD PTR BX INC WORD PTR BX;明确字操作数;明确字操作数u综合操作符合操作符应用之例用之例例例4.16 FIRST_TYPE4.16 FIRST_TYPEEQUEQUTHIS BYTE THIS BYTE WORD_TABLE WORD_TABLEDWDW100 DUP (100 DUP (?)FIRST_TYPEFIRST_TYPE与与WORD_TABLEWORD_TABLE的段,偏移地址均相同,但前者是的段,偏移地址均相同,但前者是BYTEBYTE类型,后者是类型,后者是WORDWO
23、RD类型。类型。u综合操作符合操作符应用之例用之例例例4.174.17L1L1EQU THIS FAREQU THIS FARL:L:MOV CX,100MOV CX,100L L标号与标号与L1L1标号的段、偏移地址一样,但类型不同。标号的段、偏移地址一样,但类型不同。L L是是NEARNEAR类型,类型,L1L1是是FARFAR类型,允许其他段的转移指令调用。类型,允许其他段的转移指令调用。例如例如 :JMP JMP SHORTSHORT TAG TAG TAG:TAG:u字字节分离运算符分离运算符LOWLOW、HIGHHIGH功能:功能:分分别得一个数得一个数值或地址表达式的低位和高位或
24、地址表达式的低位和高位字字节例例4.184.18STUFFSTUFF EQU 0ABCDHEQU 0ABCDH语句:语句:MOVMOVAH,AH,HIGH HIGH STUFF STUFF 汇编后:汇编后:MOVMOVAH,0ABHAH,0ABH语句:语句:MOVMOVALAL ,LOWLOW STUFF STUFF 汇编后:汇编后:MOVMOVAL,0CDHAL,0CDHn综合运算符合运算符4.3 4.3 伪指令语句伪指令语句1.1.数据定数据定义伪指令指令语句句功能:功能:定定义变量的量的类型,分配空型,分配空间并并赋初初值格式:格式:变量名量名 DB/DW/DDDB/DW/DD 操作数操
25、作数,操作数操作数u 变量名变量名 是任选项,是数据单元的符号地址是任选项,是数据单元的符号地址u助记符助记符 DBDB、DWDW、DD DD DB(Define byte)DB(Define byte):定义变量的类型为:定义变量的类型为BYTEBYTE,每个操作数每个操作数占一个字节占一个字节1.1.数据定数据定义伪指令指令语句句u助助记符符 DBDB、DWDW、DD DD DB(Define byte)DB(Define byte):定义变量的类型为:定义变量的类型为BYTEBYTE,每个操作数每个操作数占一个字节占一个字节DW(Define word)DW(Define word):定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与应用 微机 原理 应用 汇编语言 程序设计
限制150内