微机原理PPT教学课件-第3章 8086指令系统.ppt_第1页
微机原理PPT教学课件-第3章 8086指令系统.ppt_第2页
微机原理PPT教学课件-第3章 8086指令系统.ppt_第3页
微机原理PPT教学课件-第3章 8086指令系统.ppt_第4页
微机原理PPT教学课件-第3章 8086指令系统.ppt_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

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

文档简介

nmi intr,第3章 8086指令系统,3.1 指令格式与寻址方式 3.2 数据传送指令 3.3 算术运算指令 3.4 逻辑运算和移位指令,1) 指令的基本格式 计算机中的指令由操作码字段和操作数字段两部分组成; 指令的格式如图所示: 操作码:指计算机所要执行的操作,或称为操作类型; 操作数:指在指令执行操作的过程中所需要的操作数;,3.1 指令格式与寻址方式,2) 寻址方式 寻址方式就是指令中用于说明操作数所在地址的方法。,立即寻址方式 例 mov cl,1dh 则指令执行后,(cl)=1dh 例 mov ax,3000h 则指令执行后,(ax)=3000h,直接寻址方式,例 mov ax,2000h 将数据段中偏移地址为2000h单元的字送给ax寄存器。,寄存器寻址方式 例 下列程序执行后,(ax)=?,(bx)=? mov ax,1234h mov bx,5678h add ax,bx 执行:1234hax 5678hbx (ax)+(bx)ax 执行后:(ax)=68ach,(bx)=5678h,寄存器间接寻址方式 例 mov ax,bx 若(ds)2000h,(bx)1000h, 物理地址20000h1000h21000h; 指令执行前,(ax)2030h,(21000h)0a0h, (21001h)50h; 指令执行后,(ax)50a0h,(21000h)0a0h, (21001h)50h;,寄存器相对寻址方式 例 mov bx,valuebx(其中value为16位位移量的地址) 也可以表示为mov bx, value+bx) ; 如果(ds)=2000h,(bx)=1000h,value=3000h,则物理地址: pa=(ds)16+(bx)+value=20000h+1000h+3000h=24000h。 指令执行情况如下图所示,执行结果是(bx)=89abh。,基址加变址寻址方式,例 mov ax,bx+si; (也可以写成mov ax,bxsi) 如(ds)=3000h,(bx)=1000h,(si)=12fbh,则ea=1000+12fb=22fbh,pa=30000+22fbh=322fbh; 执行结果是(ax)=89abh。,课堂习题:假定ds=2000h, es=2100h, ss=1500h, si=00a0h, bx=0100h, bp=0010h,请指出下列指令的源操作数字段是什么寻址方式 ? 它的物理地址是多少? mov ax, 0abh mov ax, bx mov ax, 100h es: mov ax, bx mov ax, bp mov ax, bx+10h mov ax, 50hbx mov ax, bx si mov ax, 60hbpsi,8086指令系统,典型指令使用频率,3.2 数据传送指令,1)通用数据传送指令,(1) mov传送指令 指令的格式为:mov opd,ops;(ops)opd,【例】数据间传送,mov ax,1234h ;源操作数为直接寻址 mov bh,di ;源操作数为寄存器间接寻址 mov di,es:3si ;源操作数为变址寻址,使用跨段前缀 mov bp,3bx+si ;源操作数为基址加变址寻址 mov ax,2345h mov ds:bp,dl ;使用跨段前缀 mov es ,ax,注:ip不能用作源操作数和目的操作数; 立即数和cs不能用作目的操作数; 两个存储器之间不能直接传送数据; 两个段寄存器之间不能直接传送数据; 立即数不能传入段寄存器。,数据交换指令xchg,xchg opd,ops;即(opd)ops,(ops)opd。 【例】寄存器与存储器之间数据交换。 mov ax,5678h ;(ax)=5678h mov bx,0ffffh ;(bx)=0ffffh xchg ax,bx;(ax)=0ffffh,( bx)=5678h,2) 堆栈操作指令,进栈指令push,push ops(push reg/mem) 即:(sp)sp(ops)158sp (sp)sp (ops)70sp,【例】设ss=2000h, sp=0040h, ax=25feh 执行:push ax,执行后: ss=2000h, sp=003eh, ax=25feh , (2003eh)=25feh,出栈指令pop,pop opd(pop reg/mem) 该指令为push指令的逆过程。 即:(sp)(opd)70 (sp)+sp (sp)(opd)158 (sp)+sp,【例】设ss=2000h, sp=0040h, bx=25feh, (20040h)=2031h 执行:pop bx,执行后: ss=2000h, sp=0042h, bx=2031h , (20040h)=2031h,3) 输入输出指令,输入指令in,输入指令用来从指定的外设端口取信息送入累加器。它有四种形式: 格式:in al,port 功能:(port)al 格式:in ax,port 功能:(port)ax 格式:in al,dx 功能:(dx)al 格式:in ax,dx 功能:(dx)al,输出指令out,输出指令用来把累加器的内容送往指定的外设端口,它有四种形式: 格式:out port,al 功能:(al)port 格式:out port,ax 功能:(ax)port 格式:out dx,al 功能:(al)dx 格式:out dx,ax 功能:(ax)dx,传送偏移地址指令 lea,格式: lea opd,ops(lea reg,mem) 功能:将偏移地址送入指定寄存器。 【例】主存偏移地址的获取。 mov bx,0100h ;(bx)=0100h mov si, 0210h ;(si) =0210h lea bx,1234bx+si ; (bx)=1544h,4) 地址传送指令,3.3 算术运算指令,1)加法指令, 加1指令 inc inc opd;(操作数可以是寄存器或存储器) 如:inc bx,即(bx)+1bx, 加指令add add opd, ops 即(opd)+(ops)opd, 带进位加指令adc adc opd,ops 即(opd)+(ops)+cfopd,例无符号双字加法运算。 mov ax,4652h ;(ax)=4652h add ax,0f0f0h;(ax)=3742h,cf=1 mov dx,0234h;(dx)=0234h adc dx,0f0f0h;(dx)=0f325h,cf=0,减1指令dec dec opd 即(opd)1opd 如:dec cx。即(cx)1cx,2)减运算指令,减指令sub sub opd,ops 即(opd)(ops)opd 【例】减法运算。 mov ax ,5678h ;(ax)=5678h sub ax ,1234h ;(ax)=4444h mov bx ,3354h ;(bx)=3354h sub bx ,3340h ;(bx)=0014h,sbb opd ,ops 即(opd)(ops)cfopd,带借位减指令 sbb,比较指令 cmp,cmp opd,ops 即(opd)(ops)。 【例】比较al的内容数值大小。 cmp al,50 ;(al)50 jb l1 ;(al)=50,( al)50al inc ah ;(ah)+1ah l1: ,无符号数乘法指令mul,mul ops 即字节乘法:(al)*(ops)ax,字乘法:(ax)*(ops)dx,ax 【例】无符号数0a3h与11h相乘。 mov al,0a3h ;(al)=0a3h mov bl,11h ;(bl)=11h mul bl ;(ax)=0ad3h 有符号乘指令imul imul ops 字节乘法:(al)*(ops)ax,字乘法:(ax)*(ops)dx、ax,3) 乘运算指令,div ops 字节除法:(ax)/(ops) al(商)、ah(余数) 字除法:(dx、ax)/(ops) ax(商)、dx(余数) 【例】写出实现无符号数0400h / 0b4h运算的程序段。 mov ax,0400h ;(ax)=0400h mov bl,0b4h ;(bl)=0b4h div bl ;商(al)=05h,余数(ah)=7ch,4) 除运算指令,无符号除指令div,有符号除指令idiv idiv ops,格式:aaa 如果al的低4位大于9或(af)=1,则: (al)=(al)+6;(ah)=(ah)+1; (af)=(cf)=1;且al高4位清零。 否则:(cf)=(af)=0;al高4位清零。,非压缩的bcd码加法调整指令aaa,5)十进制调整指令,压缩的bcd码加法调整指令daa,格式:daa 如果al寄存器中低4位大于9或辅助进位(af)=1,则: (al)=(al)+6且(af)=1; 如果(al)=0a0h或(cf)=1,则:(al)=(al)+60h且(cf)=1 同时,sf、zf、pf均有影响。 【例】压缩bcd码的加法运算,实现压缩bcd码加法:68+28=96。 mov al,68h ;(al)=68h,表示压缩bcd码68 mov bl,28h ;(bl)=28h,表示压缩bcd码28 add al,bl ;二进制加法:(al)=68h+28h=90h daa ;十进制调整:(al)=96h,3.4 逻辑运算和移位指令,1)逻辑运算指令,格式:not opd ;即(opd)opd 【例】逻辑非运算。 mov ax,878ah ;(ax)=878ah not ax, ;(ax)=7875h,逻辑非指令not,逻辑乘(“与”)指令and,格式:and opd,ops ;即(opd)(ops)opd 【例】将al中第3位和第7位清零。 mov al,0ffh and al,77h,格式:test opd,ops ;即(opd)(ops) 【例】测试ax中的第12位是否为0,不为0则转l test ax,1000h jne l,测试指令test,逻辑加(“或”)指令or,格式:or opd,ops ;即(opd)(ops)opd,逻辑“异或”指令xor,格式: xor opd,ops ;即(opd)(ops)opd 11=0,10=1,01=1,00=0。,2)移位指令,算术左移和逻辑左移指令sal(shl) 格式:sal opd,1 或shl opd,1 sal opd

温馨提示

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

评论

0/150

提交评论