首页 chap2-1汇编语言与汇编程序幻灯片课件

chap2-1汇编语言与汇编程序幻灯片课件

举报
开通vip

chap2-1汇编语言与汇编程序幻灯片课件第2章汇编语言与汇编程序movax,12hcalldisplayJmp1234h主要内容:指令系统的一般概念对操作数的寻址方式六大类指令的操作原理:操作码的含义指令对操作数的要求指令执行的结果伪指令概述机器语言——二进制数形式的指令和数据。如“B064”等,既不直观,又不易理解和记忆.而“MOVAL,64H”,很容易记忆理解,这就是助记符。助记符——用便于记忆的英语单词或其缩写表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。汇编程序源程序的编译程序汇编程序汇编语言源程序机器语言目标程序汇编源程序...

chap2-1汇编语言与汇编程序幻灯片课件
第2章汇编语言与汇编程序movax,12hcalldisplayJmp1234h主要内容:指令系统的一般概念对操作数的寻址方式六大类指令的操作原理:操作码的含义指令对操作数的要求指令执行的结果伪指令概述机器语言——二进制数形式的指令和数据。如“B064”等,既不直观,又不易理解和记忆.而“MOVAL,64H”,很容易记忆理解,这就是助记符。助记符——用便于记忆的 英语单词 七年级上册英语单词表高考英语单词3500记忆高中3500个英语单词表七年级下册英语单词表小学六年级英语单词表 或其缩写 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。汇编程序源程序的编译程序汇编程序汇编语言源程序机器语言目标程序汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行,这个翻译过程叫汇编。——高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序”。§2.1符号指令中的表达式常量及数值表达式变量及变量定义标号变量和标号的类型变更§2.1.1常量和数值表达式1.常量二进制数,以B结尾。如01001101B。十进制数,如85。十六进制数,以H结尾。第1个数字为A-F时,前面应加0,如0F160H。字符串:用引号括起来的1个或多个字符。如‘ERROR!’,’a’,汇编时被翻译成对应的ASCII码45H,52H,52H,4FH,52H,21H和61H。符号常量把一个常数用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于C语言中的#define。符号定义伪指令有两种:EQU,=;用“EQU”定义的符号未清除前,不能重新定义。用“=”定义的符号可在任何时候进行重定义。二者均不占用存储空间,仅是给符号赋值例:FIVEEQU5COUNT=102.数值表达式汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。数值表达式中的运算符主要有3类:算术、逻辑、关系。1)算术运算符——+、-、*、/,MOD用于数字表达式,例:MOVAX,4*1024汇编后的形式为:MOVAX,40962)逻辑运算符——AND、OR、XOR、NOT逻辑运算符只能用于数字表达式中。例:MOVCL,36HAND0FH经汇编后:MOVCL,06H注意,不要把逻辑运算符与逻辑运算指令混淆:例:ANDAX,3FC0HAND0FF00H汇编后源操作数被翻译为:3F00H,所以上述指令与ANDAX,3F00H等价。3)关系运算符——EQ、NE、LT、GT、LE、GE关系运算的结果是一个逻辑值:真或假关系为真,结果为全1关系为假,结果为全0例:MOVBX,PORTGT300H若PORT的值大于300H,则汇编后为:MOVBX,0FFFFH否则汇编后为:MOVBX,0§2.1.2变量和地址表达式变量——即内存中的存储单元或数据区。变量名——是存储单元(数据区)的符号地址或名字。变量有三个属性:段地址—变量所在段的段地址偏移量—变量单元地址与段首地址之间的位移量。类型—常见有BYTE、WORD和DWORD三种。变量在程序中作为存储器操作数被引用。组成:A-Z(不分大小写),0-9,_不能以数字开头长度小于31个字符不能与保留字(指令助记符、伪指令、预定义符号等)重名不能重复定义例如:正确的:LP1,AGAIN,NEXT,_GO,OK_1错误的:4M,LOOP,AAA,#HELP,+ONE变量和标号名的使用规则用于定义变量,即内存单元或数据区。数据定义伪指令的格式为:变量名数据定义伪指令操作数,操作数,…常用的数据定义伪指令有如下几种:DB定义字节DW定义字DD定义双字DQ定义四字DT定义10字节操作数可以是常数、变量或表达式数据定义伪指令例1:DATA_BDB10,5,10HDATA_WDW100H,-4DATA_DDD0FFFBH汇编后的内存分配情况如右图所示。05H10H00H01HFCHFFHFBHFFH00H00H0AHQDATA_BDATA_WDATA_D10510H100H-40FFFBH例2:操作数可以是字符串,例如STRDB‘HELLO’汇编后的情况如图:STR‘H’‘E’‘L’‘L’‘O’48H45H4CH4CH4FH‘O’STR‘H’‘E’‘L’‘L’48H45H4CH4CH4FH‘O’STR‘H’‘E’‘L’‘L’48H45H4CH4CH4FH操作数?用来保留存储空间,但不存入数据.例3:ABCDB0,1,2,3,4,’OK’,’$’RSVDW?,?,?,?,?,?,?,?复制操作符DUP:重复的数据可以使用复制操作符DUP,如上面RSV亦可写成:RSVDW8DUP(?)§2.1.3标号表示指令所在内存单元的符号地址有三个属性:段地址:即标号所在段的段地址;偏移量:标号所代表存储单元的段内偏移地址;类型:NEAR或FAR,默认为NEAR:NEAR—表示标号所在语句与转移指令/调用指令在同一码段内,跳转时只需改变IP即可。FAR—标号所在语句与转移指令/调用指令不在同一代码段内。标号通常作为转移指令或CALL指令的转移地址。SEG:取变量/标号的段地址OFFSET:取变量/标号的偏移地址例:VARDB12H……MOVBX,OFFSETVAR;取变量VAR的偏移地址MOVAX,SEGVAR;取变量VAR的段地址注意,以下指令的异同:MOVBX,OFFSETVARLEABX,VAROFFSET只能取静态的偏移地址;取地址运算符——SEG、OFFSET§2.1.4类型变更常使用属性运算符——PTR用来指定操作数的类型。格式:<类型>PTR<操作数>类型∈{BYTE,WORD,DWORD,NEAR,FAR}BYTE、WORD、DWORD用于描述数据存储单元(变量)地址NEAR、FAR用于描述转移、调用的目的地址寻址方式——寻找操作数的方法,一般指寻找操作数的地址;在8086指令系统中,说明操作数所在地址的寻址方式主要有7种:①寄存器寻址⑤基址寻址②立即寻址⑥变址寻址③直接寻址⑦基址变址寻址④间接寻址2.2符号指令的寻址方式操作数放在某个寄存器中源操作数与目的操作数字长要相同寄存器寻址与段地址无关例:MOVAX,BXMOV[3F00H],AXMOVCL,AL错误例:×MOVAX,BL;字长不同×MOVES:AX,DX;寄存器与段无关2.2.1寄存器寻址AXSI指令操作例:MOVSI,AX;SI(AX)指令执行前:(AX)=2233H指令执行后:(AX)=2233H,(SI)=2233H2233H2233H操作数(为一常数,称为立即数)直接由指令给出;立即寻址只能用于源操作数例:MOVAX,1C8FHMOVBYTEPTR[2A00H],8FH错误例:×MOV2A00H,AX;错误!2.2.2立即寻址立即数操作码低8位高8位存储器MOV操作码02H31HAHAL代码段代码段立即寻址指令在存储器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H执行后,(AH)=31H,(AL)=02H指令中直接给出操作数的16位偏移地址偏移地址也称为有效地址(EA,EffectiveAddress)默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀偏移地址也可用符号地址来表示,如ADDR、VAR例:MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVSI,TABLE_PTR2.2.3直接寻址指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23012H)=CDH,(23013H)=ABH则操作数的物理地址为:20000H+3102H=23102H指令执行后:(AX)=ABCDHMOV操作码02H31HAHAL23102HCDHABH存储器代码段数据段..操作数的偏移地址(有效地址EA)放在寄存器中只有SI、DI、BX和BP可作间址寄存器例:MOVAX,[BX]MOVCL,CS:[DI]错误例:×MOVAX,[DX]×MOVCL,[AX]2.2.4间接寻址EA=(BX)(BP)(SI)(DI)指令操作例:MOVAX,[SI]若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H则指令执行后,(AX)=3344H。44H33H60001200DSSI600006120061200HAX存储器数据段+)120044H33H2.2.5基址寻址与变址寻址EA=基址(变址)寄存器的内容加上一个8/16位的位移量常用于存取表格或一维数组中的元素使用BX或BP则称为基址寻址,使用SI或DI则称为变址寻址EA=(BX)(BP)(SI)(DI)+8位16位位移量例:MOVAX,[BX+8];默认段寄存器为DSMOVCX,TABLE[SI];默认段寄存器为DSMOVAX,[BP+1000H];默认段寄存器为SS指令操作例:MOVAX,DATA[BX]若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H则物理地址=60000H+1000H+2A00H=63A00H指令执行后:(AX)=5566H(见下页图示)操作码00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代码段数据段.........66H55HMOVAX,DATA[BX]2.2.6基址变址寻址若操作数的偏移地址:由基址寄存器(BX或BP)给出——基址寻址方式由变址寄存器(SI或DI)给出——变址寻址方式由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。EA=(BX)(BP)+(SI)(DI)同一组内的寄存器不能同时出现。例:MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]错误例:×MOVAX,[BX][BP]×MOVAX,[DI][SI]83000操作码DS8000BX2000+SI100083000HAHALAX代码段数据段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H则物理地址=80000H+2000H+1000H=83000H指令执行后:(AL)=[83000H](AH)=[83001H]基址变址寻址(续)在基址变址寻址的基础上再加上一个相对位移量注意事项同基址变址寻址EA=(BX)(BP)+(SI)(DI)+8位16位位移量例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVAX,[BX]BASE[SI]MOVAX,[BX+SI]BASE指令操作例:MOVAX,DATA[DI][BX]若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H则指令执行后(AH)=[83021H],(AL)=[83020H]8320083200HAHALAX+DATA0200操作码代码段数据段.........YYXXDS8000BX2000DI1000小结指令由()和()构成如何取得操作数——称为()操作码操作数寻址方式寄存器间接、基址与变址、基址变址、相对基址变址五种寻址方式的比较:寻址方式指令操作数形式寄存器间接只有一个寄存器(BX/BP/SI/DI之一)基址BX或BP加上位移量变址SI或DI加上位移量基址—变址两个不同类别的寄存器相对基址-变址两个不同类别的寄存器加上位移量2.2.8存储器寻址中段地址的确定段地址的确定有一个基本约定,除非指令中特别说明要超越这个约定,则按该约定进行,其约定见下表:访问方式约定段段超越偏移地址取指令CS不允许IP堆栈操作SS不允许SP数据存取(未用BP)DSES、SS、CSEABP间址、基址、变址SSDS、ES、CSEA例:MOVES:[DI],AL
本文档为【chap2-1汇编语言与汇编程序幻灯片课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
小马奔腾
暂无简介~
格式:ppt
大小:421KB
软件:PowerPoint
页数:40
分类:教育学
上传时间:2022-01-14
浏览量:0