资源描述:
《汇编语言常用指令大全.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.MOV 指令为双操作数指令,两个操作数中必须有一个是寄存器. MOVDST,SRC//Byte/Word 执行操作:dst=src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH 入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSHSRC//Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入
2、栈,低位字节后入栈. POPDST//Word 出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器. 执行POPSS指令后,堆栈区在存储区的位置要改变. 执行POPSP指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令:将两操作数值交换. XCHGOPR1,OPR2//Byte/Word 执行操作:Tmp=OPR1OPR1=OPR2OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码
3、指令:把一种代码转换为另一种代码. XLAT(OPR可选)//Byte 执行操作:AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(LoadEffectiveAddress)有效地址传送寄存器指令 LEAREG,SRC//指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作:REG=EAsrc 注:SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOVBX,OFFSETOPER_ONE等价于LEABX,OPER_ONE MOVSP,[
4、BX]//将BX间接寻址的相继的二个存储单元的内容送入SP中 LEASP,[BX]//将BX的内容作为存储器有效地址送入SP中 LDS(LoadDSwithpointer)指针送寄存器和DS指令 LDSREG,SRC//常指定SI寄存器。 执行操作:REG=(SRC),DS=(SRC+2)//将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。.. LES (LoadESwithpointer)指针送寄存器和ES指令 LESREG,SRC//常指定DI寄存器 执行操作:REG=(SRC)
5、,ES=(SRC+2)//与LDS大致相同,不同之处是将ES代替DS而已. LAHF (LoadAHwithFlags)标志位送AH指令 LAHF//将PSW寄存器中的低8位的状态标志(条件码)送入AH的相应位,SF送D7位,ZF送D6位...... 执行操作:AH=PSW的低位字节。 SAHF (StoreAHintoFlags)AH送标志寄存器指令 SAHF//将AH寄存器的相应位送到PSW寄存器的低8位的相应位,AH的D7位送SF,D6位送ZF...... 执行操作:PSW的低位字节=AH。 PUSHF (PUSHtheF
6、lags)标志进栈指令 PUSHF//将标志寄存器的值压入堆栈顶部,同时栈指针SP值减2 执行操作:SP=SP-1,(SP)=PSW的高8位,SP=SP-1,(SP)=PSW的低8位 POPF (POPtheFlags)标志出栈指令 POPF//与PUSHF相反,从堆栈的顶部弹出两个字节送到PSW寄存器中,同时堆栈指针值加2 执行操作:PSW低8位=(SP),SP=SP+1,PSW高8位=(SP),SP=SP+1 输入输出指令(IN,OUT):只限于使用累加器AX或AL与外部设备的端口传送信息. IN(INput)输入指令:信息
7、从I/O通过累加器传送到CPU INAL,PORT//直接的字节输入,PORT是外设端口编号(即端口地址),只能取00H~0FFH共256个端口地址. INAX,PORT//直接的字输入,AX存储连续两个端口地址PORT+1,PORT INAL,DX//间接的字节输入,端口地址范围可通过DX设置为0000H~0FFFFH共65536个端口地址 INAX,DX//间接的字输入 OUT(OUTput)输出指令:信息从CPU通过累加器传送到I/O OUTPORT,AL//直接的字节输出,PORT规定与IN指令相同. OUTPORT,A
8、X OUTDX,AL//间接的字节输出 OUTDX,AX MOVAL,05HOUT27H,AL//将字节05H传送到地址27H的端口 ADD(ADD)加法指