资源描述:
《第4章 指令系统(2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章指令系统(2)第4章:4.3数据传送类指令数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOVXCHGXLATPUSHPOPLEA第4章:4.3.1通用数据传送指令提供方便灵活的通用传送操作有3条指令MOVXCHGXLATMOVXCHGXLAT第4章:1.传送指令MOV(move)把一个字节或字的操作数从源地址传送至目的地址MOVreg/mem,imm;立即数送寄存器或主存MOVreg/mem/seg,reg;寄存器送(段)寄存器或主存MOVreg/s
2、eg,mem;主存送(段)寄存器MOVreg/mem,seg;段寄存器送寄存器或主存演示第4章:MOV指令--立即数传送movcl,4;cl←4,字节传送movdx,0ffh;dx←00ffh,字传送movsi,200h;si←0200h,字传送movbvar,0ah;字节传送;假设bvar是一个字节变量,定义如下:bvardb0movwvar,0bh;字传送;假设wvar是一个字变量,定义如下:wvardw0明确指令是字节操作还是字操作以字母开头的常数要有前导0第4章:MOV指令--寄存器传送movah,al;ah←al,字节传送movbvar,ch;bvar←ch,
3、字节传送movax,bx;ax←bx,字传送movds,ax;ds←ax,字传送mov[bx],al;[bx]←al,字节传送寄存器具有明确的字节和字类型第4章:MOV指令--存储器传送moval,[bx];al←ds:[bx]movdx,[bp];dx←ss:[bp+0]movdx,[bp+4];dx←ss:[bp+4]moves,[si];es←ds:[si]不存在存储器向存储器的传送指令第4章:MOV指令--段寄存器传送mov[si],dsmovax,ds;ax←dsmoves,ax;es←ax←ds对段寄存器的操作不灵活第4章:MOV指令传送功能图解MOV指令也
4、并非任意传送!立即数段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存储器非法指令的主要现象:两个操作数的类型不一致无法确定是字节量还是字量操作两个操作数都是存储器段寄存器的操作有一些限制第4章:非法指令--两个操作数类型不一致在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令MOVAL,050AH;非法指令,修正:;movax,050ahMOVSI,DL;非法指令,修正:;movdh,0;movsi,dx第4章:非法指令--无法确定是字节量还是字量操作当无法通过任一个操作数确定是操作类型
5、时,需要利用汇编语言的操作符显式指明MOV[BX+SI],255;非法指令,修正:;movbyteptr[bx+si],255;byteptr说明是字节操作;movwordptr[bx+si],255;wordptr说明是字操作第4章:非法指令--两个操作数都是存储器8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)MOVbuf2,buf1;非法指令,修正:;假设buf2和buf1是两个字变量;movax,buf1;movbuf2,ax;假设buf2和buf1是两个字节变量;moval,buf1;movbuf2,al第4章:非法指令--段寄存器
6、的操作有一些限制8088指令系统中,能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活MOVDS,ES;非法指令,修正:;movax,es;movds,axMOVDS,100H;非法指令,修正:;movax,100h;movds,axMOVCS,[SI];非法指令;指令存在,但不能执行第4章:2.交换指令XCHG(exchange)把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGreg,reg/mem;regreg/mem演示第4章:例4.2数据交换movax,1199h;ax=1199h
7、xchgah,al;ax=9911h;等同于xchgal,ahmovwvar,5566h;wvar是一个字量变量xchgax,wvar;ax=5566h,wvar=9911h;等同于xchgwvar,axxchgal,byteptrwvar+1;ax=5599h,wvar=6611h;“byteptrwvar+1”强制为字节量,只取高字节与AL类型交换,否则数据类型不匹配第4章:3.换码指令XLAT(translate)将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL换码指令执行前:在主存建立一个字节量表格,内含要转换成的