资源描述:
《IBM汇编语言程序设计课件第3章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指令系统一组指令的集合第3章80x86的指令系统和寻址方式操作码操作数...操作数指令寻址方式与数据有关的寻址方式与转移地址有关的寻址方式1.8086的寻址方式与数据有关的寻址方式:以MOV指令为例立即寻址MOVAX,3069H寄存器寻址MOVAL,BH直接寻址MOVAX,[2000H]寄存器间接寻址MOVAX,[BX]寄存器相对寻址MOVAX,COUNT[SI]基址变址寻址MOVAX,[BP][DI]相对基址变址寻址MOVAX,MASK[BX][SI]存储器寻址(1)立即寻址方式*——操作数在
2、指令中给出指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’*只能用于SRC字段MOV40H,AL*SRC和DST的字长一致MOVAH,3064H(2)寄存器寻址方式*—操作数在指定的寄存器中MOVAX,BXMOVAL,BHMOVAX,3064H*字节寄存器只有AHALBHBLCHCLDHDL*SRC和DST的字长一致MOVAH,BX*CS不能用MOV指令改变MOVCS,AX(3)直接寻址方式*—有效地址EA由指令直接给出例:MOVAX,[2000H]EA=2000H,假设(D
3、S)=3000H,那么PA=32000H*隐含的段为数据段DS*可使用段跨越前缀MOVAX,ES:[2000H]*操作数地址可由变量(符号地址)表示,但要注意VALUEDB10变量的属性MOVAH,VALUEMOVAX,VALUEMOVAX,WORDPTRVALUE503032000AHAL3050(AX)=3050H寄存器间接寻址*—EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(
4、BX)MOVAX,[BP]PA=16d(SS)+(BP)*不允许使用AX、CX、DX存放EAMOVAX,[CX]*SRC和DST的字长一致MOVDL,[BX];[BX]指示一个字节单元MOVDX,[BX];[BX]指示一个字单元*适于数组、字符串、表格的处理有效地址=(BX)(BP)8位(SI)16位(DI)+位移量(5)寄存器相对寻址方式*指令格式:MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]假设(DS)=3000H,(SI)=2000H,COUNT=3000H,则:PA=
5、35000H假设(35000H)=1234H,那么(AX)=1234H*适于数组、字符串、表格的处理(6)基址变址寻址方式*指令格式:MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合MOVAX,[BX][BP]MOVAX,[SI][DI]有效地址=(BX)(SI)(BP)(DI)+(7)相对基址变址寻址方式MOVAX,MASK[BX][SI]或MOVAX,MASK[BX+SI]或MO
6、VAX,[MASK+BX+SI]有效地址=(BX)(SI)8位(BP)(DI)16位++位移量访问存储器的方式默认的段寄存器可跨越的段寄存器偏移地址取指令CS无IP堆栈操作SS无SP一般数据访问DSCSESSS有效地址EABP作为基址的寻址SSCSDSESBP串操作的源操作数DSCSESSSSI串操作的目的操作数ES无DI段寄存器的使用规定例:编写一段显示字符串STRING的程序DATASEGMENTSTRINGDB‘HAPPYNEWYEAR!’,0DH,0AH,‘$’COUNTDW17DATAEN
7、DS(1)直接寻址movdl,stringmovah,2int21h;显示字符‘H’movdl,string+1movah,2int21h;显示字符‘A’::(2)寄存器间接寻址movcx,count;movcx,17movbx,offsetstring;string的偏址bxNext:movdl,[bx]movah,2int21h;显示一个字符incbxloopnext;循环指令(3)寄存器相对寻址movcx,count;movcx,17movsi,0Next:movdl,string[si];
8、movdl,[string+si]movah,2int21h;显示一个字符incsiloopnext;循环指令(4)基址变址寻址movcx,count;movcx,17movbx,offsetstring;string的偏址bxmovsi,0Next:movdl,[bx][si];movdl,[bx+si]movah,2int21h;显示一个字符incsiloopnext;循环指令(5)DOS显示字符串功能movdx,offsetstring;string的偏址d