第02章 8086指令体系1数据传送类指令ppt
DalianMaritimeUniversity. 3.380863.38086指令体系指令体系 2 2013年1月10日周四 大连海事大学核算机科学与技能学院 3.380863.38086指令体系指令体系 8086指令体系包含六大类、133种根本指令 ①数据传送类 ②算术运算类 ③逻辑运算与移位类 ④串操作类 ⑤操控搬运类 ⑥处理机操控类 经过寻址方法的改变与数据方法(字节、字型)的组 合,可构成上千条指令。 DalianMaritimeUniversity. 3.3.13.3.1数据传送类指令数据传送类指令 3.3.13.3.1数据传送类指令数据传送类指令 数据传送是核算机中最根本、最重要的一种操作, 传送指令也是最常运用的一类指令 传送指令把数据从一个方位传送到另一个方位 除标志寄存器传送指令外,均不影响标志位 要点把握 MOVXCHGXLATPUSHPOPLEA 3.3.1.13.3.1.1通用数据传送指令通用数据传送指令 提供方便灵敏的通用传送操作 有3条指令 MOV XCHG XLAT MOVMOV XCHGXCHGXLATXLAT 1.1.传送指令传送指令MOVMOV((movemove)) 把一个字节或字的操作数从源地址传 送至意图地址 MOVreg/mem,imm ;当即数送寄存器或主存 MOVreg/mem/seg,reg ;寄存器送(段)寄存器或主存 MOVreg/seg,mem ;主存送(段)寄存器 MOVreg/mem,seg ;段寄存器送寄存器或主存 演示 MOVMOV指令--当即数传送指令--当即数传送 movcl,4;cl←4,字节传送 movdx,0ffh;dx←00ffh,字传送 movsi,200h;si←0200h,字传送 movbvar,0ah;字节传送 ;假定bvar是一个字节变量,界说如下: bvardb0 movwvar,0bh;字传送 ;假定wvar是一个字变量,界说如下:wvardw 0 清晰指令是字节操作仍是字操作 以字母最初的常数要有前导以字母最初的常数要有前导00 MOVMOV指令--寄存器传送指令--寄存器传送 movah,al;ah←al,字节传送 movbvar,ch;bvar←ch,字节传送 movax,bx;ax←bx,字传送 movds,ax;ds←ax,字传送 mov[bx],al;[bx]←al,字节传送 寄存器具有清晰的字节和字类型 MOVMOV指令--存储器传送指令--存储器传送 moval,[bx];al←ds:[bx] movdx,[bp];dx←ss:[bp+0] movdx,[bp+4];dx←ss:[bp+4] moves,[si];es←ds:[si] 不存在存储器向存储器的传送指令 MOVMOV指令--段寄存器传送指令--段寄存器传送 mov[si],ds movax,ds;ax←ds moves,ax;es←ax←ds 对段寄存器的操作不灵敏 MOVMOV指令传送功用图解指令传送功用图解 MOVMOV指令也并非任指令也并非任 意传送意传送!! 当即数 段寄存器 CSDSESSS 通用寄存器 AXBXCXDX BPSPSIDI 存 储 器 不合法指令的首要现象: 两个操作数的类型不共同 无法确认是字节量仍是字量操作 两个操作数都是存储器 段寄存器的操作有一些约束 不合法指令--两个操作数类型不共同不合法指令--两个操作数类型不共同 双操作数指令中,意图操作数和源操作数有必要具 有共同的数据类型,或许同为字量,或许同为字 节量,不然为不合法指令 MOVAL,050AH;不合法指令,批改: ;movax,050ah MOVSI,DL;不合法指令,批改: ;movdh,0 ;movsi,dx 不合法指令--无法确认是字节量仍是字量操作不合法指令--无法确认是字节量仍是字量操作 当无法经过任一个操作数确认操作类型时,需求 运用汇编语言的操作符显式指明 MOV[BX+SI],255;不合法指令,批改: ;movbyteptr[bx+si],255 ;byteptr阐明是字节操作 ;movwordptr[bx+si],255 ;wordptr阐明是字操作 不合法指令--两个操作数都是存储器不合法指令--两个操作数都是存储器 8088指令体系除串操作指令外,不允许两个操作 数都是存储单元(存储器操作数) MOVbuf2,buf1;不合法指令, 批改: ;假定buf2和buf1是两个字变量 ;movax,buf1 ;movbuf2,ax ;假定buf2和buf1是两个字节变量 ;moval,buf1 ;movbuf2,al 不合法指令--段寄存器的操作有一些约束不合法指令--段寄存器的操作有一些约束 8088指令体系中,能直接对段寄存器操作的指令 只要MOV等个别传送指令,而且不灵敏 MOVDS,ES;不合法指令,批改: ;movax,es ;movds,ax MOVDS,100H;不合法指令,批改: ;movax,100h ;movds,ax MOVCS,[SI];不合法指令 ;指令存在,但不能履行 2.2.交流指令交流指令XCHGXCHG((exchangeexchange)) 把两个当地的数据来进行交流 寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据 XCHGreg,reg/mem ;regreg/mem 演示演示 例例::数据交流数据交流 movax,1199h;ax=1199h xchgah,al;ax=9911h ;等同于xchgal,ah movwvar,5566h;wvar是一个字量变量 xchgax,wvar ;ax=5566h,wvar=9911h ;等同于 xchg wvar,ax xchg al,byte ptr wvar+1 ;ax=5599h,wvar=6611h ;“byte ptr wvar+1”强制为字节量,只取高字节 与AL类型交流,不然数据类型不匹配 3. 3. 换码指令 换码指令XLAT XLAT((translate translate)) 将BX指定的缓冲区中、AL指定的位移处的一个 字节数据取出赋给AL 换码指令履行前: 在主存树立一个字节量表格,内含要转换成的意图代码 表格首地址寄存于BX,AL寄存相对表格首地址的位移量 换码指令履行后: 将AL寄存器的内容转换为方针代码 XLAT ;al←ds:[bx+al] 演示 演示 Asc db 30h,31h,32h,33h,…,39h Mov bx,offset Asc Mov al,3 Xlat ;al=33h 3.3.1.2 3.3.1.2 仓库操作指令 仓库操作指令 仓库是一个“后进先出FILO”(或说“先进后出 FILO”)的主存区域,坐落仓库段中;SS段寄存 器记载其段地址 仓库只要一个出口,即当时栈顶;用仓库指针寄 存器SP指定 仓库只要两种根本操作:进栈和出栈,对应两条 指令PUSH和POP 图示 图示 进栈指令 进栈指令PUSH PUSH 进栈指令先使仓库指针SP减2,然后把一 个字操作数存入仓库顶部 PUSH r16/m16/seg ;SP←SP-2 ;SS:[SP]←r16/m16/seg 演示 演示 push ax push [2000h] 出栈指令 出栈指令POP POP 出栈指令把栈顶的一个字传送至指定的目 的操作数,然后仓库指针SP加2 POP r16/m16/seg ; r16/m16/seg←SS:[SP] ;SP←SP+2 pop ax pop wvar 演示 演示 仓库操作的特色 仓库操作的特色 仓库操作的单位是字,进栈和出栈只对字 量 字量数据从栈顶压入和弹出时,都是低地 址字节送低字节,高地址字节送高字节 仓库操作遵从先进后出准则,但可用存储 器寻址方法随机存取仓库中的数据 仓库段是程序中不可或缺的一个内存区, 常用来 暂时寄存数据 传递参数 保存和康复寄存器 3.3.1.3 3.3.1.3 标志操作指令 标志操作指令 1. 标志位操作指令 CLC ;复位进位标志:CF←0 STC ;置位进位标志:CF←1 CMC ;求反进位标志:CF←~CF CLD ;复位方向标志:DF←0 STD ;置位方向标志:DF←1 CLI ;复位中止标志:IF←0 STI ;置位中止标志:IF←1 25 2013年1月10日周四 大连海事大学信息科学与技能学院 2. 2. 标志寄存器传送指令 标志寄存器传送指令 指令格局: LAHF;(AH)←(PSW低字节) SAHF;(PSW低字节)←(AH) PUSHF;(SP)←(SP-2)、((SP+1)(SP))←(PSW) POPF;(PSW)←((SP)+1,(SP))、(SP)←(SP) +2 留意: 留意: ①LAHF/SAHF指令是寄存器AH与标志寄存器PSW的低字节之 间完结的字节型数据传送。 ②PUSHF/POPF指令是标志寄存器PSW与仓库间进行的字型数据 传送。 ③指令SAHF和POPF将影响标志位。 将存储器操作数的有用地址送至指定的16位通用 寄存器 3.3.1.4 3.3.1.4 有用地址传送指令 有用地址传送指令LEA LEA((load effective address load effective address)) LEA r16, mem ;r16←mem的有用地址EA 例: 有用地址的获取 mov bx,400h mov si,3ch lea bx,[bx+si+0f62h] ;BX←400H+3CH+0F62H=139EH 例 例: : 地址传送与内容传送 地址传送与内容传送 wvar dw 4142h ;假定偏移地址为04H … mov ax,wvar ;内容传送:AX=4142H lea si,wvar ;地址传送:SI=0004H ;等同于 lea si, [0004h] mov cx,[si] ;内容传送:CX=4142H mov di,offset wvar ;=mov di,0004h ;运用操作符OFFSET获取 变量的有用地址 mov dx,[di] ;内容传送:DX=4142H 28 2013年1月10日周四 大连海事大学信息科学与技能学院 地址传送指令 地址传送指令 除LEA外还有两条地址传送指令: ①指针送寄存器和DS: LDS REG, rem ;(REG)←(rem),(DS)←(rem+2) ②指针送寄存器和ES: LES REG, rem ;(REG)←( rem ),(ES)←(rem +2) 29 2013年1月10日周四 大连海事大学信息科学与技能学院 LEA指令将源操作数的有用地址送入指定寄存器;LDS或LES指 令将源操作数指定的4个接连字节单元的内容,别离送入指令指 定的寄存器以及DS或ES中。 [例] ① LEA AX,[5678H];(AX)← 5678H ② 已知: (DS)=C000H(C2480H)=1357H(C2482H)=2468H 指令: LDS SI,[2480H] 指令履行成果:(SI)=1357H ,(DS)=2468H 留意: 指令的源操作数不能运用当即数和通用寄存器,意图操作数不 能运用段寄存器。地址传送指令不影响状况标志位。 30 2013年1月10日周四 大连海事大学核算机科学与技能学院 3.3.1.5 3.3.1.5 累加器专用传送指令 累加器专用传送指令 这类指令以累加器为中心,完结I/O端口与CPU之间 的数据传送。 输入/输出指令按长度分为长格局和短格局。 长格局指令代码为2个字节,第二字节用PORT表明 端口号,它指定的端口地址规模是00至FFH。 短格局指令代码为1个字节,它指定的端口地址规模 是0000至FFFFH。短格局指令有必要将端口地址放入 寄存器DX中。 31 2013年1月10日周四 大连海事大学核算机科学与技能学院 1. 1. 输入指令 输入指令IN IN 完结从输入端口到CPU的数据传送。 指令格局: 长格局 IN AL, PORT ;(AL)←(PORT) IN AX, PORT ;(AX)←(PORT+1,PORT) 短格局 IN AL,DX ;(AL)←((DX)) IN AX, DX ;(AX)←((DX)+1,(DX)) 32 2013年1月10日周四 大连海事大学核算机科学与技能学院 2. 2. 输出指令 输出指令OUT OUT 用输出指令 用输出指令OUT OUT完结从 完结从CPU CPU到输出端口的数据传送。 到输出端口的数据传送。 指令格局: 长格局 OUT PORT, AL ;(PORT)←(AL) OUT PORT, AX ;(PORT+1,PORT)←(AX) 短格局 OUT DX, AL ;((DX))←(AL) OUT DX, AX ;((DX)+1,DX)←(AX) 33 2013年1月10日周四 大连海事大学核算机科学与技能学院 [ [例例]] ①IN AL,09 ;(AL)←09号端口的内容 ②OUT 40H,AL ;(40H)←(AL) ③MOV DX,0600H ;(DX)←0600H OUT DX,AX ;(0601H ,0600H)←(AX) 留意: ①输入/输出指令只可以运用累加器AL或AX接纳或发送数据。 ②运用短格局指令,有必要将端口地址放入寄存器DX中。 ③输入/输出指令不影响标志位。 Dalian Maritime University. 参考资料 参考资料 MOV指令的功用 XCHG指令的功用 XLAT指令的功用 仓库的图示 SS SP 0000H (栈顶) 存储器 高地址 仓库段 PUSH指令的功用 POP指令的功用
微型核算机体系原理及使用:国产龙芯处理器的软件和硬件集成(根底篇)教育课件第5章 MIPS32指令集架构--6.7分支和跳转指令
嵌入式体系根底教程第09讲第5章ARM指令集特色寻址方法和指令.pptx
微型核算机体系原理及使用:国产龙芯处理器的软件和硬件集成(根底篇)教育课件第5章 MIPS32指令集架构--6.1算术类指令
微型核算机体系原理及使用:国产龙芯处理器的软件和硬件集成(根底篇)教育课件第5章 MIPS32指令集架构--6.5加载和保存指令
云核算与大数据技能 验证性试验辅导 试验实践3.Linux操作体系实践-常用指令;4.JDK 装置与装备和MySQL装置与装备;5.大数据核算结构Hadoop3.0的装置布置与装备及HDFS常用指令