微机4-12上第2章(已学汇编).ppt
《微机4-12上第2章(已学汇编).ppt》由会员分享,可在线阅读,更多相关《微机4-12上第2章(已学汇编).ppt(169页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第第2章章 指令系统及汇编语言程序设计指令系统及汇编语言程序设计2.1 8088/8086的寻址方式的寻址方式2.2 8088/8086的指令系统的指令系统2.3 汇编语言汇编语言汇编语言源程序格式汇编语言源程序格式伪指令伪指令汇编语言源程序结构汇编语言源程序结构2.4汇编语言程序设计汇编语言程序设计 基本程序设计方法基本程序设计方法DOS功能调用功能调用顺序程序设计顺序程序设计分支程序设计分支程序设计循环程序设计循环程序设计子程序设计子程序设计本次课内容请请大大家家复复习习汇编语言汇编语言掌掌握握本本节节内内容容第二章复习小结第二章复习小结下次课下次课5.95.9汇编语言汇编语言单元考试单元
2、考试及讲第及讲第3 3章章2.3 汇编语言汇编语言汇编语言的特点汇编语言的特点汇汇编编语语言言是是一一种种以以处处理理器器指指令令系系统统为为基基础础的的低低级级程程序序设设计计语言,它采用助记符表达指令操作码语言,它采用助记符表达指令操作码利利用用汇汇编编语语言言编编写写程程序序的的主主要要优优点点是是可可以以直直接接、有有效效地地控控制制计计算算机机硬硬件件,因因而而容容易易创创建建代代码码序序列列短短小小、运运行行快快速速的的可执行程序可执行程序在在有有些些应应用用领领域域,汇汇编编语语言言的的作作用用是是不不容容置置疑疑和和无无可可替替代代的的汇编程序设计的过程是与其他高级语言程序设计
3、大致相同汇编程序设计的过程是与其他高级语言程序设计大致相同什么是汇编语言什么是汇编语言以助记符形式表示计算机指令以助记符形式表示计算机指令助助记记符符(mnemonic)是是便便于于人人们们记记忆忆、并并能能描描述述指指令令功功能能和和指指令操作数的符号令操作数的符号助记符是表明指令功能的英语单词或其缩写助记符是表明指令功能的英语单词或其缩写汇汇编编格格式式指指令令以以及及使使用用它它们们编编写写程程序序的的规规则则就就形形成成汇汇编编语语言(言(Assembly Language)汇编语言程序汇编语言程序:用汇编语言书写的程序:用汇编语言书写的程序汇汇编编程程序序:将将汇汇编编语语言言程程序
4、序“汇汇编编”成成机机器器代代码码目目标标模模块块的程序的程序 汇编语言程序与汇编程序是两个概念汇编语言程序与汇编程序是两个概念硬指令和伪指令硬指令和伪指令汇编程序汇编程序将将汇汇编编语语言言源源程程序序翻翻译译成成在在机机器器上上能能执执行行的的机机器器语语言言程序(程序(目的代码目的代码程序程序硬指令硬指令-执行性语句执行性语句使使CPU产产生生动动作作、并并在在程程序序执执行行时时才才处处理理的的语语句句,就就是是第第2章章学学习习的处理器指令的处理器指令与与具具体体的的处处理理器器有有关关、与与汇汇编编程程序序无无关关。汇汇编编后后对对应应一一条条指指令令代代码码伪指令(伪指令(Dir
5、ective)-说明性语句说明性语句不不产产生生CPU动动作作、在在程程序序执执行行前前由由汇汇编编程程序序处处理理的的说说明明性性语语句句,例如,数据说明、变量定义等等例如,数据说明、变量定义等等伪指令与具体的处理器类型无关,但与汇编程序的版本有关伪指令与具体的处理器类型无关,但与汇编程序的版本有关本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM 6.15 硬指令和伪指令采用易于记忆的符合表达,这就是助记符一一.汇编语言源程序格式汇编语言源程序格式(4部分部分)标号标号 硬硬指令的位置指令的位置(逻辑地址逻辑地址),),后后加冒号加冒号:名字名字 伪伪指令的位置或存储单元名称指令的
6、位置或存储单元名称(变量名变量名),),后后不加不加冒号冒号:一般最多由一般最多由3131个字母、数字及规定的特殊符号(如个字母、数字及规定的特殊符号(如 _ _、$、?、)组成)组成不能以数字开头(如不能以数字开头(如 1ABC 1ABC错),不能是错),不能是保留字保留字指令助记符指令助记符 必须有必须有,其它其它3部分可无部分可无伪伪指令助记符指令助记符-伪伪指令指令硬硬指令助记符指令助记符-硬指令硬指令注释注释语句中由分号语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性开始的部分为注释内容,用以增加源程序的可读性必要时,一个语句行也可以由分号开始作为阶段性注释必要时,一个
7、语句行也可以由分号开始作为阶段性注释汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理标号标号:硬硬指令助记符指令助记符 操作数操作数1,1,操作数操作数2 ;注释注释名字名字 伪指令助记符伪指令助记符 参数参数1,参数参数2,;注释注释例:例:硬指令硬指令 Done:mov al,02h 伪指令伪指令 Sum db 02h 标号标号 指令助记符指令助记符 操作数操作数 ;注释注释 保留字保留字保保留留字字(Reserved Word)是是汇汇编编程程序序已已经经利利用用的的标识符(也称为关键字),主要有:标识符(也称为关键字),主要有
8、:硬指令助记符硬指令助记符例如:例如:MOV、ADD伪指令助记符伪指令助记符例如:例如:DB、DW操作符操作符例如:例如:OFFSET、PTR寄存器名寄存器名例如:例如:AX、CS预定义符号预定义符号例如:例如:data 汇编语言大小写不敏感汇编语言源程序格式汇编语言源程序格式-操作数操作数操作数操作数 常数、数值表达式、寄存器、标号常数、数值表达式、寄存器、标号、变量等、变量等数值表达式数值表达式一般是指由一般是指由运算符运算符连接的各种常数所构成的表达式连接的各种常数所构成的表达式汇汇编编程程序序在在汇汇编编过过程程中中计计算算表表达达式式,最最终终得得到到一一个个确确定定的的数值,所以也
9、是常数数值,所以也是常数常用的常用的运算符运算符是加减乘除(是加减乘除(*/)例:例:mov ax,3*4+5;等价于;等价于mov ax,17汇编语言源程序格式汇编语言源程序格式-操作数操作数操作数操作数 常数、寄存器、标号常数、寄存器、标号、数值表达式、变量等、数值表达式、变量等常数常数 汇编时已确定的数据汇编时已确定的数据 如硬指令中立即数如硬指令中立即数二进制数二进制数 如如 MOV AL,10110101B十进制常数十进制常数 如如MOV AL,181十十六六进进制制数数常常数数 以以字字母母开开头头的的十十六六进进制制数数前前加加“0”。例例:MOV AL,0B5H字符和字符串常数
10、字符和字符串常数例例:MOV AX,AB ;AX4142h MOV AX,1 ;AX31h用用单单引引号号括括起起来来的的单单个个字字符符或或多多个个字字符符,其其数数值值是是每每个个字字符符对对应应的的ASCII码的值码的值.例如:例如:d=64H,AB=4142H符符号号常常数数 用用符符号号名名表表示示一一个个常常数数,可可以以提提高高程程序序的的可可读读性性,同同时时更更具具有通用性有通用性符号定义伪指令格式符号定义伪指令格式等价等价EQU伪指令伪指令 符号名符号名 EQU EQU 表达式表达式例:XY EQU 5等号等号=伪指令伪指令 符号名符号名=表达式表达式例:XY=5例例:XY
11、 EQU5 MOV AH,XY ;等价于等价于 MOV AH,5二二.伪指令伪指令1.符号符号(常量常量)定义伪指令定义伪指令 EQU符号常量使用符号名表达一个数值符号常量使用符号名表达一个数值格式格式 符号名符号名 EQU 表达式表达式 例例X EQU 7 2.变量定义伪指令(变量定义伪指令(定义数据伪指令定义数据伪指令)变量定义伪指令变量定义伪指令为为变变量量申申请请固固定定长长度度的的存存储储空空间间,同同时时将将相相应应存存储储单单元元初初始始化化(参参数数为为?则则不不初始化)。格式为:初始化)。格式为:变量名变量名 DB/DW/DD/DQ 参数参数1 1,参数,参数2 2,DB(或
12、或BYTE)定义字节定义字节 其后每个参数占其后每个参数占1 1个字节个字节存储单元存储单元DW(或或WORD)定定义义字字 其其后后每每个个参参数数占占2 2个个字字节节(先先低低字字节节后后高高字字节节)存存储单元储单元DD(或或DWORD)定义双字定义双字 其后每个参数占其后每个参数占4 4个字节个字节存储单元存储单元DQ(或或QWORD)定义定义4 4个字个字 其后每个参数占其后每个参数占8 8个字节个字节存储单元存储单元多个存储单元如果初值相同,可以用复制操作符多个存储单元如果初值相同,可以用复制操作符DUP进行定义:进行定义:重复次数重复次数 DUP(重复参数重复参数)变变量量实实
13、质质指指内内存存单单元元的的数数据据,变变量量需需要要事事先先定定义义才才能能使使用用.定定义义后后的的变变量量可可用用变量名等引用其中的数据,即变量的数值变量名等引用其中的数据,即变量的数值例:例:alphabyte30h,2 DUP(55H),34h,?,?movcx,alpha ;cx5530h movbx,offset alpha moval,bx+3 ;al34h 变量定义伪指令最常使用变量定义伪指令最常使用字节变量定义实例字节变量定义实例;数据段;数据段X db 61h,0fbh db 2 dup(64h),?Y db ABC应用应用mov al,Xdec X+1mov Y,alA
14、SCII a=61h A=41h B=42h C=43hASCII a=61h A=41h B=42h C=43h;此处;此处X表示它的第表示它的第1个数据,故个数据,故AL61h;对;对X为始的第为始的第2个数据减个数据减1,故为,故为0fah;Y=al=61h,现在现在Y这个字符串成为这个字符串成为 aBC实例实例程序如下程序如下countdb 80h,B,?maxintequ 04hnumberdw maxintarraydb maxint dup(3)mov cx,countdecbyte ptr arraymovbx,offset numbermovah,bx+2moval,bx-2
15、hlt 问问:程序执行后程序执行后ax=?cx=?存储单元存储单元33-1=2array0004H number-B=42H80Hcount答案答案:cx=4280h ah=2 al=42h字变量定义实例字变量定义实例;数据段;数据段countdw 8000h,?,ABmaxintequ 64hnumberdw maxintarraydw maxint dup(0)ASCII A=41h B=42h ASCII A=41h B=42h ;数据段;数据段 字变量和字常量的定义:字变量和字常量的定义:WNUM EQU 5678H ;定义定义WNUM为常量为常量COUNT DW 20H ;定定义义C
16、OUNT变变量量,假假设设在在数数据据段段的的偏偏移移地地址为址为0010H;代码段代码段 字变量和字常量的应用:字变量和字常量的应用:MOV AX,BX+SI+WNUM 等价于等价于 MOV AX,BX+SI+5678H MOV AX,COUNT等价于等价于 MOV AX,0010H;AX0020HMOV AX,SI+COUNT等价于等价于 MOV AX,SI+0010H LEA BX,COUNT等价于等价于 LEA BX,0010H ;BX 0010HMOV BX,OFFSET COUNT等价于等价于 MOV BX,0010H ;BX 0010H字变量和字常量字变量和字常量实例实例3.宏(
17、宏(Macro)命令伪指令)命令伪指令为为简简化化程程序序编编制制,对对多多次次使使用用的的程程序序,既既可可用用子子程程序序也也可可用宏指令、宏汇编实现用宏指令、宏汇编实现宏定义宏定义 宏是具有宏命令名的一段汇编语句序列宏是具有宏命令名的一段汇编语句序列宏命令名宏命令名 MACRO 形参数形参数1,参数,参数2,;宏定义体(硬指令、伪指令);宏定义体(硬指令、伪指令)ENDM宏调用宏调用 宏命令名宏命令名 实参数实参数1,参数,参数2,宏宏需需要要先先定定义义,然然后后才才可可在在程程序序中中宏宏调调用用,形形式式上上类类似似其其他他指指令令,常常称称其为其为宏指令宏指令宏宏指指令令实实际际
18、上上是是一一段段代代码码序序列列的的缩缩写写。在在汇汇编编时时,宏宏指指令令被被汇汇编编程程序序用用对应的代码序列替代,这就是对应的代码序列替代,这就是宏展开宏展开因为是在汇编过程中实现的因为是在汇编过程中实现的宏展开宏展开,所以常称为,所以常称为宏汇编宏汇编宏命令伪指令实例:宏命令伪指令实例:*子程序设计子程序设计;主程序;主程序mov al,datacall dpchar;子程序;子程序 AL左移左移4位位dpchar procmovcl,4salal,cl retdpchar endp*宏调用宏调用mov al,datadpchar;宏定义:;宏定义:AL左移左移4位位dpchar ma
19、cromovcl,4salal,cl endmdpchar macro ;宏定义;宏定义movcl,4salal,cl endm .model small .stack .code .startupmov al,datadpchar ;宏调用;宏调用.exit 0end宏与子程序的比较宏与子程序的比较比较比较仅仅是是源源程程序序级级的的简简化化:宏宏调调用用在在汇汇编编时时进进行行程程序序语语句句的的展展开开,不不需需要要返返回回;不不减减小小目目标标程程序序,执执行行速速度没有改变度没有改变还还是是目目标标程程序序级级的的简简化化:子子程程序序调调用用在在执执行行时时由由CALLCALL指指
20、令令转转向向、RETRET指指令令返返回回;形形成成的的目目标标代代码码较较短短,执行速度减慢执行速度减慢宏宏子程序子程序三三.汇编语言的运算符汇编语言的运算符变量和标号的属性变量和标号的属性变变量量和和标标号号具具有有逻逻辑辑地地址址和和类类型型属属性性,汇汇编编程程序序提提供供有有关关的的操作符,以便获取这些属性值操作符,以便获取这些属性值变量例变量例 sum db 02h mov al,sum标号标号例例 done:mov al,02h Jmp done逻辑地址属性逻辑地址属性 取值运算符取值运算符SEG和和OFFSET变量和标号对应存储单元的逻辑地址变量和标号对应存储单元的逻辑地址逻辑
21、地址包含逻辑地址包含:段地址和偏移地址段地址和偏移地址例:例:mov ax,offset sum类型属性类型属性 属性运算符属性运算符PTR变变量量名名的的类类型型可可以以是是BYTE(字字节节)、WORD(字字)和和DWORD(双双字)等;字)等;标标号号、段段名名、子子程程序序名名的的类类型型可可以以是是NEAR(近近)和和FAR(远远),分分别别表示段内或段间调用表示段内或段间调用例:例:dec word ptr sum取值运算符取值运算符SEG和和OFFSET取得名字或标号的段地址和偏移地址取得名字或标号的段地址和偏移地址OFFSET 名字名字/标号标号返回名字或标号的偏移地址返回名字
22、或标号的偏移地址例:例:mov ax,offset alphaSEG 名字名字/标号标号返回名字或标号的段地址返回名字或标号的段地址例:例:Alpha db30h,33hmovbx,offset alphamoval,bx+1 movcx,bx;al33h;cx3330h属性运算符属性运算符PTR对名字或标号的类型属性进行设置对名字或标号的类型属性进行设置类型名类型名 PTR 名字名字/标号标号类类型型名名可可以以是是BYTE、WORD、DWORD(依依次次表表示示字字节节、字字、双双字字)等等,或或者者是是NEAR、FAR(分分别别表表示示近近、远远)定定义义的类型的类型 例:例:mov a
23、l,byte ptr var;var是一个字节变量是一个字节变量 jmp far ptr label;label是一个标号是一个标号 dec word ptr di inc byte ptr di使用使用PTRPTR操作符,可以临时改变名字或标号的类型操作符,可以临时改变名字或标号的类型8088CPU的存储格式的存储格式-小端存储方式小端存储方式D7D0字节字节D15D0字字D31D0双字双字00006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址低地址LSBMSB00002H00002H单元的内容为:单元的内容为:00002H=34H
24、00002H=34H00002H“00002H“字字”单元的内容为:单元的内容为:00002H=1234H00002H=1234H00002H00002H号号“双字双字”单元的内容为:单元的内容为:00002H=78561234H00002H=78561234H多字节数据在存储器中占连续的多个存储单元多字节数据在存储器中占连续的多个存储单元存放存放:低字节存入低地址,高字节存入高地址:低字节存入低地址,高字节存入高地址表达表达:用低地址表示多字节数据占据的地址空间:用低地址表示多字节数据占据的地址空间同一个存储器地址可以是字节单元地址、字单元同一个存储器地址可以是字节单元地址、字单元地址、双字
25、单元地址等等地址、双字单元地址等等 设设设设DS=0DS=000002H“双字双字”单元单元 MOV MOV EAXEAX,0002H,0002H00002H“字字”单元单元 MOV MOV AXAX,0002H,0002H00002H单元单元 MOV MOV AHAH,0002H,0002H高地址高地址存储单元存储单元存储单元存储单元D7 D0存储器地址存储器地址存储器地址存储器地址四四.汇编语言源程序结构汇编语言源程序结构完整的汇编语言源程序由段组成完整的汇编语言源程序由段组成一一个个汇汇编编语语言言源源程程序序可可以以包包含含若若干干个个代代码码段段、数数据据段段、附附加加段段或或堆堆栈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 12 汇编
限制150内