《IBM-PC汇编语言》+全书课件(3课时).ppt_第1页
《IBM-PC汇编语言》+全书课件(3课时).ppt_第2页
《IBM-PC汇编语言》+全书课件(3课时).ppt_第3页
《IBM-PC汇编语言》+全书课件(3课时).ppt_第4页
《IBM-PC汇编语言》+全书课件(3课时).ppt_第5页
已阅读5页,还剩375页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IBM-PC汇编语言程序设计,巢湖学院计算机系教材主编:沈美名温冬蝉主讲教师:江家宝主讲手机讲Email:jiangjiabao12032jjb12032欢迎在座各位常与我交流!,教学日历:第01讲(第01周):基础知识第02讲(第02周):8086计算机组织第03讲(第03周):8086的寻址方式第04讲(第04周):数据传送类指令第05讲(第05周):算术指令、逻辑指令和串处理指令第06讲(第06周):控制转移指令和处理机控制与杂项操作指令第07讲(第07周):汇编语言程序格式第08讲(第08周):循环与分支程序设计方法第09讲(第09周):循环与分支程序设计实例分析第10讲(第10周):子程序设计方法第11讲(第11周):子程序设计实例分析第12讲(第12周):高级汇编技术第13讲(第13周):I/O设备的数据传送方式一第14讲(第14周):I/O设备的数据传送方式二第15讲(第15周):键盘I/O和显示器I/O,课件总目录,IBMPC汇编语言程序设计(第2版),清华大学计算机系列教材沈美名温冬蝉编著,总目录,参考资料1.80X86汇编语言程序设计沈美明温冬婵清华大学出版社2.IBMPC汇编语言与程序设计PETERABEL编著第4版清华大学出版社.PRENTICEHALL第5版人民邮电出版社3.IBMPC汇编语言与程序设计例题习题集温冬婵沈美明清华大学出版社,总目录,第01讲:基础知识,FORTRANBASICCOBOLPASCALC/C+JAVA.,第01讲(第01周):基础知识,总目录,后一讲,计算机语言的发展,面向机器的低级语言通常是为特定的计算机或计算机系列专门设计的。保持了机器语言的优点具有直接和简捷的特点。可有效地访问、控制计算机的各种硬件设备如:磁盘、存储器、CPU、I/O端口等。高效的程序设计语言目标代码简短;占用内存少;执行速度快;经常与高级语言配合使用应用十分广泛。,第01讲(第01周):基础知识,后一讲,汇编语言的特点,总目录,例1:编程实现c=a+b,并在屏幕上显示出结果。#includestdafx.h#includestdio.hintmain(intargc,char*argv)inta,b,c;a=1;b=2;c=a+b;printf(“c=%dn,c);return0;,编译后的目标文件达到3.59KB,第01讲(第01周):基础知识(3课时),后一讲,汇编语言的特点举例1,总目录,例2.编程实现c=a+b,并在屏幕上显示出结果。datasegmentadb?bdb?cdb?stringdbc=$dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:pushdssubax,axpushaxmovax,datamovds,axmoves,ax,汇编后的目标文件只有208字节,第01讲(第01周):基础知识(3课时),mova,1movb,2moval,aaddal,bmovc,alleadx,stringmovah,09int21haddc,30hmovdl,cmovah,2int21hmovdl,0ahint21hmovdl,0dhint21hretmainendpcodeendsendstart,后一讲,汇编语言的特点举例2,总目录,系统程序、高效率代码、I/O驱动程序70%以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。高级绘图程序、视频游戏程序一般是用汇编语言编写的。,后一讲,第01讲(第01周):基础知识(3课时),汇编语言的应用,总目录,目标:了解汇编语言的特性及其编程技术。建立起“机器”和“程序”、“空间”和“时间”的概念。建议:充分注意“汇编”课实践性强的特点。多读程序,多写程序,多上机调试程序。熟悉PC机的编程结构。掌握汇编语言及其程序设计的基本概念、方法和技巧。,后一讲,第01讲(第01周):基础知识(3课时),总目录,教师建议,数制数制之间的转换运算数和字符的表示,后一讲,第01讲(第01周):基础知识(3课时),总目录,第1章、基础知识,存储容量1K=1024=210(Kilo)1M=1024K=220(Mega)1G=1024M=230(Giga)1个二进制位:1bit(比特)8个二进制位:1Byte(字节)1Byte=8bit2个字节:1Word(字)1Word=2Byte=16bit,后一讲,第01讲(第01周):基础知识(3课时),总目录,预备知识,(1)R进制数位权、基数、数码;基数为R,逢R进一,(2)八进制与二进制数码对应关系,(3)十六进制与二进制数码对应关系,1.1.1、数制,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1、进位计数制与不同基数的数之间的转换,(1)、任意进制R转化成十进制数Eg:1011100.10111B=92.71875D(2)、十进制数转换成其它进制数整数部分=除R倒取余;小数部分=乘R顺取整;Eg:125.63D=二进制和八进制,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1.2、各数制之间的转换,二进制十六进制十进制二进制十进制十六进制,降幂法除法,二进制是桥梁,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1.3、各数制之间的转换,二进制八进制011101111110.011100B3576.3411101111110.0111B=3576.34O61.42O.11000110001061.42O=110001.10001B,后一讲,第01讲(第01周):基础知识(3课时),总目录,二进制十六进制110101.1011111B00110101.10111110B35BE110101.10111110B=35BEHA19.CHA19.C101000011001.1100A19.CH=101000011001.11B,后一讲,第01讲(第01周):基础知识(3课时),总目录,1011B=23+21+20=11D降幂法除法例:27D=?B2711331-2n321684211101127D=11011B,二进制十进制,后一讲,第01讲(第01周):基础知识(3课时),总目录,十六进制十进制BF3CH=11163+15162+3161+12160=48956D降幂法除法例:399D=?H39914315399/1624/161/160-16n256161F8118F399D=18FH,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.2.1、二进制算术运算逢二进一、借一为二,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.2、运算(算术运算和逻辑运算),加法规则0+0=00+1=11+0=11+1=0(向高位进1),乘法规则00=001=010=011=1,减法规则0-0=00-1=1(向高位借1)1-0=11-1=0,1.2.2、十六进制算术运算逢十六进一、借一为十六,(1).加法规则:两个一位数之和S0时同十进制减法,若SOA34DH,382FH;,后一讲,第01讲(第01周):基础知识(3课时),总目录,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.3、几种基本的逻辑运算(按位操作),例:X=00FFHY=5555H,求Z=XY=?X=0000000011111111BY=0101010101010101BZ=0101010110101010BZ=55AAH,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.1、计算机中有符号数的表示机器数在机器中,把一个数连其符号在内数值化表示的数;,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4、计算机中数和字符的表示,1.4.2、数的常用表示法原码反码补码原码表示法:符号+绝对值例:n=8bit+3原码=0000,0011=03H-3原码=1000,0011=83H+0原码=0000,0000=00H-0原码=1000,0000=80H0的表示不惟一反码表示法:正数的反码同原码,负数的反码数值位与原码相反例:n=8bit+5反码=0000,0101=05H-5反码=1111,1010=FAH+0反码=0000,0000=00H-0反码=1111,1111=FFH0的表示不惟一,后一讲,第01讲(第01周):基础知识(3课时),总目录,补码表示法:正数的补码:同原码负数的补码:(1)写出与该负数相对应的正数的补码(2)按位求反(3)末位加一,后一讲,第01讲(第01周):基础知识(3课时),总目录,补码的符号扩展规则=高位不足者补符号位eg:46补=00101110=2EH扩展成8位=0000000000101110=002EH扩展成16位46补=11010010=D2H扩展成8位=1111111111010010=FFD2H扩展成16位,后一讲,第01讲(第01周):基础知识(3课时),总目录,例:机器字长8位,-46补码=?46补码=001011101101000111010010=D2H机器字长8位时,-46补码=D2H+0补码=000000001111111100000000=-0补码0的表示惟一,按位求反,末位加1,按位求反,末位加1,N位二进制有符号数补码的表示范围:-2N-1X2N-1-1,N位二进制无符号数的表示范围:0X2N-1,后一讲,第01讲(第01周):基础知识(3课时),总目录,例:,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.3、补码的加法和减法:机器数用补码表示的目的是为了运算方便,先看下面的一个例子:X=+32D、Y=96D求(X+Y)的值和补码?显然:X原=00100000BX补=00100000BY原=11100000BY补=10100000BX原+Y原=100000000B然而:X补+Y补=11000000B结果显示:XY补=X补Y补求补运算对一个二进制数按位求反、末位加一加法规则:X+Y补码=X补码+Y补码减法规则:X-Y补码=X补码+-Y补码补码减法可转换为补码加法,后一讲,第01讲(第01周):基础知识(3课时),1.4.4、进位和溢出进位:由于运算结果超出了位数,最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。溢出:表示结果超出了字长允许表示的范围,一般会造成结果出错。,总目录,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.5、字符的表示(1).机器中字符分类,(2).ASCII码:用一个字节来表示一个字符,低7位为字符的ASCII值,最高位一般用作校验位。,第01讲:作业布置Page14:书面作业1.1(3)、1.2(1)、1.3(4)1.4(3)、1.5(6)、1.6(1),后一讲,第01讲(第01周):基础知识(3课时),总目录,计算机系统存储器中央处理机外部设备,第02讲(第02周):8086计算机组织(3课时),第02讲:8086计算机组织,前一讲,后一讲,总目录,2.1.1、80 x86微处理器的发展P表2.1(1968年美国Intel公司成立)补充:1999年初32位Pentium芯片;注意各种芯片的位数;2002年后32/64位Pentium芯片;2.1.2、基本术语:晶体管数、主频、三总线(数据、地址、控制)、总线宽度、主存储器(内存)、高速缓冲存储器、外部存储器;2.1.3、基本常识:(1)、地址总线宽度与寻址空间:8位二进制数1个字节B;2个字节1个字W;2个字双字D;地址线K根可寻址2个存储单元;若按“字节”编址2个字节(即2B);若按“字”编址2个字(即22B=2B);若按“双字”编址2个双字(即24B=2B);Eg:32位地址总线、按字节编址、则寻址2B=2KB=2MB=2GB=4GB;(2)、Chche容量:80386少许、804868KBPentium8KB指令cache、8KB数据cache;PetiumPro8KB指令cache、8KB数据cache、356KB二级cache;Pentium、更多;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.1、8086微处理器简介,硬件组成:,1.中央处理机CPU,总线控制逻辑,接口,接口,2.存储器,大容量存储器,I/O设备,3.I/O子系统,系统总线,.,.,软件:系统软件用户软件,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.2、基于微处理器的计算机系统组成,(1).系统软件厂家提供给用户的一组程序、为用户程序服务;主要有:操作系统、I/O驱动程序、文件管理程序、文本编辑程序、翻译程序(汇编程序、编译程序、解释程序);汇编语言高级语言注意汇编语言与硬件有关、高级语言与硬件无关;(2).用户软件用户编写的程序及相关的文档;,软件组成:,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.3.1、中央处理器CPU的组成:运算器、控制器、寄存器组等、运算器算术逻辑部件(ALU):算术运算、逻辑运算;、控制器产生控制信号、控制所有部件;、寄存器组暂存指令运行所需的信息:操作数、地址、中间结果、最终结果、预取指令等;2.3.2、80 x86寄存器组1、寄存器组分类:、程序可见寄存器“通用寄存器”、“专用寄存器”、“段寄存器”、程序不可见寄存器用户不可操作、CPU专用;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.3、中央处理器(CPU),后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,80 x86的寄存器结构,数据寄存器,指针寄存器,变址寄存器,控制寄存器,2、通用寄存器组简介(8个)分8位、16位、32位(1).累加器(EAX、AX、AH、AL)除通用外、乘/除指令的操作数、算术运算结果和操作数、I/O与CPU传送信息;(2).基址变址寄存器(EBX、BX、BH、BL)除通用外、存放基址(3).计数寄存器(ECX、CX、CH、CL)除通用外、计数功能;(4).数据寄存器(EDX、DX、DH、DL)除通用外、与累加器组合成双字或四字长数(DX:AX,EDX:EAX)、存放I/O端口地址;(5).堆栈指针寄存器(ESP、SP)除通用外,存放堆栈指针;(6).基址指针寄存器(EBP、BP)除通用外、与SS联合确定”栈”中单元;(7).源变址寄存器(ESI、SI)除通用外、与DS联用确定数据段中单元;(8).目的变址寄存器(EDI、DI)除通用外、与DS联用确定数据段单元:注意:变址寄存器(7)、(8)有自增自减功能。,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,3、专用存储器简介(3个)16位/32位(1).指令指针寄存器(EIP/IP)存放即将运行的下一条指令偏移地址;它与段存储器CS联合确定代码段中指令的物理地址;(2).堆栈指针寄存器(ESP/SP)除通用外,存放堆栈指针;(3).标志寄存器(EFLAGS/FLAGS)又名“程序状态寄存器”,存放条件运行时的“条件码标志、控制标志、系统标志”(状态字)条件码标志(6个)程序运行结果和状态信息,可作为程序转移与处理控制的条件;溢出标志OF溢出时为1(OV),不溢出时为0(NV);符号标志SF标识结果正负,正为0(PL),负为1(NZ);零标志ZF结果是否为0,是为1(ZR),否为0(NZ);半进位标志AF运算时第3位是否发生进/借位,是为1(AC),否为0(NA);奇偶标志PF结果中的1的个数是否为偶,是为1(PE),否为0(PO);进位标志CF最高位是否发生进/借位,是为1(CY),否为0(NC);控制标志(方向标记DF)DF=1则表明变址寄存器SI和DI递减;DF=0则表明变址寄存器SI和DI递增;系统标志用于I/O、中断屏蔽、程序调试、任务切换等;主要有:TF陷阱标志;IF中断标志;IOPLI/O特权标志等;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,条件码标志符号标志名值为1值为0OF溢出标志OVNVSF符号标志NGPLZF零标志ZRNZCF进位标志CYNCAF辅助进位标志ACNAPF奇偶标志PEPO,例:ADDAX,BXJO/JCERROR?,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,标志寄存器(FLAGS),控制标志符号标志名值为1值为0DF方向标志DNUPIF中断标志EIDITF陷阱标志没定义,4、段寄存器组(4个/6个)简介都是16位:代码段CS、数据段DS、堆栈段CS、附加段ES、附加数据段(FS和GS);,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.1、存储单元的物理地址:Def:为了便于读写信息,内存中按照字节编址即每个字节有一个唯一编号,该编号位该单元的物理地址;注意:字节编址、二进制表示、十六进制书写;参见图(2.5),存储器以字节(8bit)为编程单位每个字节单元都有唯一的地址编码地址用无符号整数来表示(编程用十六进制表示)一个字要占用相继的两个字节低位字节存入低地址,高位字节存入高地址对字,双字,四字单元的地址一律以最低字节地址表示机器以偶地址访问(读/写)存储器,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4、存储器的存储单元地址和存储内容,2.4.2、存储单元中的内容:,Def:逻辑地址段地址和偏移地址统称逻辑地址;若:X单元存放的内容是Y单元的地址,则Y单元的内容表示为:(Y)=(X)字节,字,双字,四字长内容在存储器中的存储形式低对低,高对高字节内容(10000H)9FH;(10001H)26H访问一次内存字内容(10000H)269FH;(10001H)4826H访问两次内存双字内容(10000H)8348269FH;(10001H)5C834826H访问四次内存,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.3、实模式存储器寻址(寻址如何形成物理地址),(1)、def:实模式采用16位段地址和16位地址偏移形成20位物理地址;最大寻址空间1MB,最大分段为64KB的存储器寻址方式?def:保护模式采用16位段地址和32位偏移地址形成32位物理地址;最大寻址空间为4GB,最大分段为4GB的存储器寻址方式;(2)、存储器地址分段:20根地址线:地址范围00000HFFFFFH(1MB)机器字长16位:仅能表示地址范围0000HFFFFH(64KB)小段:每16个字节为一小段,共有64K个小段小段的首地址00000H0000FH00010H0001FH00020H0002FHFFFF0HFFFFFH段起始地址(段基址)每一小段起始地址的高16位(低4位为0);偏移地址(有效地址:EA)段内相对于段起始地址的偏移值;64K范围内的任意字节;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,(3)、实模式寻址方式:16d段基址+偏移地址(EA)=物理地址(PA)16位16位20位即:16位段基址左移4位后加16位偏移地址形成20位物理地址(硬件自动实现)例:(DS)=2100H,(EA)=(BP)=0500H则:(PA)=21000H+0500H=21500H(4)、段寄存器(16位)专门存放段基址的寄存器;、CS存放当前正在运行的程序段基址;、DS存放当前正在运行的程序所用到的数据段基址;、SS存放当前使用的堆栈段的栈底(高地址);、ES存放附加的数据段基址;注意:、每个段寄存器定义的段可以独占64KB,也可重叠(见图2.9);、段寄存器与其对应存放偏移地址的寄存器之间有默认关系(见表2.3与表2.4),后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,支持多任务处理功能支持虚拟存储器特性,2.4.4、保护模式下存储器寻址16位选择器的值经过操作系统的地址转换操作变成32位的段地址,然后加上32位的偏移地址而形成了32位的物理地址;,保护模式下的存储器寻址,所选存储单元,描述符64,描述符表,所选段,存储器,段基地址32,选择器16,偏移地址32,逻辑地址,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.5、寄存器与存储器的比较:,寄存器存储器在CPU内部在CPU外部访问速度快访问速度慢容量小,成本高容量大,成本低用名字表示用地址表示没有地址地址可用各种方式形成,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,1、外部接口组成:由一组“寄存器”及相关“控制电路组成”;、数据寄存器存放主机与外设交换的数据;、状态寄存器存放外设和接口的当前状态信号;、命令寄存器存放CPU给外的控制命令;2、Def:端口地址(又称“端口号”)外设寄存器的地址(即编号)、编址方式独立编址、混合编址;、80 x86I/O地址空间为64KB(即65536个B)外设中每个寄存器有一个端口(Port)地址,构成一个独立于内存的I/O地址空间:0000HFFFFH3、外设的例行程序通过中断方式转入的子程序,它完成一定的I/O功能;分两种:BIOS和DOS;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.5、外部设备,第02讲作业布置Page33:书面作业习题2.2、习题2.3、习题2.4、习题2.5、习题2.8;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,第03讲:8086寻址方式,教学要求:1.掌握一般指令系统的基本概念:指令格式、功能和注意事项。2.重点掌握8086/8088指令系统中,各指令的格式、寻址方式、指令类型。3.了解其他(奔腾等)的寻址方式和指令类型。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,第3章、80 x86指令系统和寻址方式,总目录,3.1、指令系统的基本概念,计算机的指令系统就是指该计算机能够执行的全部指令的集合。每种计算机都有它支持的指令集合。16位8086指令系统是整个Intel80 x86系列微处理器指令系统的基础。,3.1.1、指令系统,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,指令由操作码和操作数两部分组成。,操作数是指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有三个甚至四个操作数,通常称为一地址指令、二地址指令、三,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.1.2指令格式,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。指令对标志的影响该指令执行后是否对各个标志位(OV、ZF、CF、PF等)有影响,以及如何影响。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.1.3学习指令的注意事项,3.2.1寻址、寻址方式的概念寻址就是寻找操作数的地址。寻址方式就是寻找操作数的方法。操作数可以跟随在指令操作码之后,称为立即数.操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数.绝大多数的操作数存放在内存储器中,称为存储器操作数.指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数.,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.2、80 x86寻址方式,指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。80X86寻址方式分类:寻址的中心问题如何确定“偏移地址”的值;第一类:与数据有关的十种方式立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址、比例变址寻址、基址比例变址寻址、相对基址比例变址寻址;第二类:与转移地址有关的四种寻址方式段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址;说明:同一指令的多个操作数可各自采用不同的寻址方式。,3.2.280X86的指令格式指令助记符操作数1,操作数2,操作数3;注释,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.2.3与数据有关的寻址方式与寻址方式有关的基础知识简介:(1)、有效地址(EA)指令直接或间接指明的存放操作数的内存单元的偏移地址:EA=基址+(变址*比例因子)+位移量注意:上述公式中四种成分的不同组合形成八种寻址方式基址(base)存放在“基址寄存器”中;可正可负;主要用于存放数组或字符串首址;16位基址寄存器:BX、BP.32位基址寄存器:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI.变址(index)存放在“变址寄存器”中;可正可负;主要用于访问数组中某元素或字符串中某一元素.16位变址寄存器:SI、DI.32位变址寄存器:除ESP以外的七个32位通用寄存器.比例因子(scalefactor)只与变址寄存器联用;只能为1、2、4或8;注意:只能是32位寻址,没有16位寻址;位移量(displacement)存放在指令中的一个8位、16位、32位地址偏移部分;可正可负;,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(2)、段超越前缀形成物理地址时,段寄存器与访存类型之间有默认匹配关系,但有时可以使用段超越前缀来改变默认关系(参见P39表3.2);格式:MOVAX,ES:2000H特别注意:但以下三种情况不允许使用段超越前缀串处理指令的目的串ES段;取指指令CS段;PUSH的目的和POP的源SS段;,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,以MOV指令为例:立即寻址MOVAX,3069H寄存器寻址MOVAL,BH直接寻址MOVAX,2000H寄存器间接寻址MOVAX,BX寄存器相对寻址MOVAX,COUNTSI基址变址寻址MOVAX,BPDI相对基址变址寻址MOVAX,MASKBXSI基址比例变址寻址MOVEBX,EAXEDX*8相对基址比例变址寻址MOVEAX,TABLEEBPEDI*4,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,1)立即寻址方式没有EA,图形表示:,定义:操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数)实列:MOVAH,5MOVAH,05HMOVAX,3064HMOVEAX,12345678H,功能:操作数存放在存储器,指令下一单元的内容为立即操作数n。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.1】MOVAX,4576H执行后(AX)=?,该例中源操作数为立即寻址方式,立即数为4576H,存放在指令的下一单元。,执行:4576HAX,执行后:(AX)=4576H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,2)寄存器寻址方式没有EA,定义:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。,汇编格式:R(其中R表示寄存器名,如AX、BX等。)实例:MOVAX,BX,功能:操作数直接存放在寄存器R中。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,指令中可以引用的寄存器及其符号名称如下:8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL;16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32位寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP。,注意:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.2】下列程序执行后,(AX)=?,(BX)=?MOVAX,1234HMOVBX,5678HADDAX,BX,执行:AX1234H,执行:BX5678H,执行:AX(AX)+(BX),执行后:(AX)=68ACH,(BX)=5678H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3)直接寻址方式EA=位移量,定义:指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。,汇编格式:含有变量的地址表达式。,功能:指令下一字单元的内容是操作数的偏移地址EA。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.3】执行指令:MOVBX,1234H设(DS)=2000H。执行后:(BX)=?,34H,12H,执行:BX(21234H),执行后:(BX)=5213H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,13,52,在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。例如:MOVES:1000H,AX,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表示,如:MOVBX,VARW,其中,VARW是内存字变量;试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,4)寄存器间接寻址方式EA=基址/变址,定义:操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。,汇编格式:R格式示例:MOVAX,BX或MOVAX,ES:BX,功能:寄存器R存放操作数的偏移地址EA。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.4】假设有指令:MOVBX,DI,在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?,解:寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成,即:PA=(DS)*16+DI=1000H*16+2345H=12345H。,该指令的执行效果是:把从物理地址为12345H开始的一个字的值传送给BX。,4354,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。该寻址方式物理地址的计算方法如下:BX物理地址PA=16DS+SIDI或物理地址PA=16SS+BP,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。汇编格式:XR(位移量X,是8位或16位二进制补码表示的有符号数)格式示例:MOVAX,COUNTSI或MOVAX,3000HSIMOVAX,COUNT+SI或MOVAX,3000H+SIMOVAX,ES:COUNTSI或MOVAX,ES:COUNT+SI功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,5)寄存器相对寻址方式EA=基址/变址+位移量,总目录,【例3.5】假设指令:MOVBX,SI+100H,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?解:EA=(SI)+100H=2345H+100H=2445HPA=(DS)16+EA=1000H16+2445H=12445H。所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。汇编格式:BR+IR格式示例:MOVAX,BXSI或MOVAX,BX+SIMOVAX,ES:BXSI或MOVAX,ES:BX+SI功能:操作数存放在存储器,BR的内容加IR的内容是操作数的偏移地址EA。图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,6)基址变址寻址方式EA=基址+变址,总目录,【例3.6】假设指令:MOVBX,BX+SI,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?解:操作数的物理地址PA为:PA=(DS)*16+(BX)+(SI)=1000H*16+2100H+0011H=12111H所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位位移量之和。汇编格式:varBR+IR格式示例:MOVAX,COUNTBXSI或MOVAX,-46HBXSIMOVAX,COUNTBX+SI或MOVAX,0246HBX+SIMOVAX,COUNT+BX+SI或MOVAX,-56H+BX+SIMOVAX,ES:COUNTBXSI或MOVAX,ES:0246H+BX+SI功能:操作数存放在存储器,BR内容加IR内容加位移量X是操作数的偏移地址EA。图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,7)相对基址变址寻址方式EA=基址+变址+位移量,总目录,【例3.7】假设指令:MOVAX,BX+SI+200H,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么?解:该操作数的物理地址应由DS和EA的值形成;即:PA=12310H所以,该指令的执行效果是:把从物理地址为12310H开始的一个字的值传送给AX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,跨段越问题,凡是使用寄存器为BX、SI、DI时,其默认段为DS,使用BP时,默认段为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。汇编格式:段寄存器名:操作数地址。功能:冒号“:”之前的段寄存器名指明操作数所在的段。【例3.8】MOVAX,DS:BPMOVCX,SS:SI该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为:PA1=(DS)左移4位+BPPA2=(SS)左移4位+SI,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,格式:MOVEAX,MASKESI*4或MOVEAX,MASK+ESI*4讲解:eg3.12,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,8)相对比例变址寻址EA=变址比例因子+位移量,格式:MOVEBX,EAXEDX*8或MOVEBX,EAX+EDX*8或MOVEBX,ESPEAX*2,格式:MOVEAX,TABLEEBPEDI*4或MOVEAX,TABLE+EBP+EDI*48位/16位/32位的位移量注意1:比例因子只能与32位变址寄存器:EAX、EBX、ECX、EDX、EBP、ESI、EDI联用;且比例因子只能为1、2、4或8;注意2:8)、9)、10)只能是32位寻址,没有16位寻址;,9)基址比例变址寻址EA=基址+变址比例因子,10)相对基址比例变址寻址EA=基址+变址比例因子+位移量,总目录,3.2.4、与转移地址有关的寻址方式用来确定转移指令及转子(call)指令的转向地址。转移地址是由各种寻址方式得到的有效地址和段地址相加而成的,有效地址存入IP寄存器中,段地址指定为CS段寄存器内容。段内寻址段内直接寻址JMPNEARPTRNEXT段内间接寻址JMPTABLEBX段间寻址段间直接寻址JMPFARPTRNEXT段间间接寻址JMPDWORDPTRBX,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(1).段内直接寻址,转向的有效地址=当前(IP)+位移量(8bit/16bit)格式:JMPSHORTQUEST短跳转8位位移量JMPNEARPTPPROGIA近跳转16位位移量即:CS不变(IP)当前(IP)+位移量(8bit/16bit),第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.8】(1).JMPSHORTQUEST其中QUEST表示转移的符号地址,操作符SHORT表示是个8位带符号数,数的范围是80H7FH,即-128+127。它只能相对于当前IP(转移指令的下一条指令的首地址)所指的位置作-128+127范围内跳转,所以称为短跳转。(2).JMPNEARPTRPROGA其中PROGA表示转移的符号地址,操作符NEARPRT表示是个16位带符号数,数的范围是8000H7FFFH,即-32768+32767。它只能相对于当前IP所指的位置作-32768+32767范围内跳转,所以称为近跳转。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(2).段内间接寻址,转向的有效地址是一个寄存器或存储单元的内容。可用除立即数以外的任何一种数据寻址方式得到,所得到的转向的有效地址取代IP寄存器的内容。格式:JMPBX即:(IP)寄存器的内容JMPWORDPTRBP+TABLE即:(IP)存储器的内容JMPDWORDPTREBP+TABLE即:(IP)存储器的内容注意:指令EA中是除立即数以外的任何寻址方式取得的16/32位偏移地址;,寄存器,存储器,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.9】已知:TABLE=20A2H,(BX)=1256H,(SI)=528EH,(DS)=2000H,(232F8H)=3280H,(264E4H)=2450HJMPBX;(IP)=1256HJMPWORDPTRTABLEBX;(IP)=3280HJMPWORDPTRBXSI;(IP)=2450H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(3).段间直接寻址,用指令中提供的转向段地址和偏移地址取代CS和IP。格式:JMPFARPTRNEXT功能:(CS)NEXT所在段的基址;(IP)NEXT所在段的段内偏移;即转到NEXT所在位置;,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.9】JMPFARPTRNEXTROUNT,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(4).段间间接寻址,用存储器中的两个相继字的内容取代CS和IP,存储单元的地址可用存储器寻址方式得到。格式:JMPDWORDPTRBX/32位寻址类同;EBXJMPDWORDPTRBX+MARK/32位寻址类同;EBXJMPDWORDPTRBX+SI/32位寻址类同;EBX注意:EA是除立即数寻址和寄存器寻址以外的任一寻址方式获得的有效地址,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.10】JMPDWORDPTRINTERS+BX若:DS=3000H,BX=1200H,INTERS=0020H,则:存储单元的物理地址PA=30000+0020+1200=31200H指令执行前:CS=0000H,IP=1000H;(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。指令执行后:CS=1000H,IP=0140H:(31220H)=40H,(31221)=01H,(31222H)=00H,(31223)=10H。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,指令JMPDWORDPTRINTERS+BX的存储和执行情况:,第03讲(第03周

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论