文章目录
一、数据传送指令1.通用传送指令2.堆栈操作指令3.交换指令4.查表指令5.输入输出指令6.地址传送指令7.标志传送指令
一、数据传送指令
1.通用传送指令
格式: MOV dest, src; dest←srcdest 可以是寄存器,存储器,累加器(acc),段寄存器src 可以是立即数,存储器,寄存器,累加器,段寄存器传送字节还是字要看寄存器是8位还是16位的。如果没有寄存器寻址,则用byte ptr或word ptr指明。如:
MOV BYTE PTR DS:[2056H], 23
2.堆栈操作指令
格式
PUSH src ;进栈。 SP ←SP-2, (SS:SP) ←srcPOP dest ;出栈。 dest ←(SS:SP), SP ←SP+2PUSHF ;标志寄存器(Flags)进栈POPF ;标志寄存器(Flags)出栈 src 寄存器,存储器,段寄存器操作数必须是16位的
3.交换指令
格式 XCHG op1,op2 ;交换op1和op2的内容两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;源和目地操作数类型要一致
4.查表指令
格式 XLAT ; AL <- (BX + AL)根据表项序号查出表中对应代码的内容执行时先将表的首地址(偏移地址)送到BX中,表项序号(即偏移量)存于AL中,执行XLAT后查出的内容放在AL中
5.输入输出指令
格式:
IN acc, PORT ; acc←端口(地址为PORT)内容,PORT取值0~255。IN acc, DX ; acc←端口(地址在DX中)内容。OUT PORT, acc ; 端口(地址为PORT)内容← accOUT DX, acc ; 端口(地址在DX中)内容← acc 只限于用累加器AL或AX来传送信息
6.地址传送指令
格式
LEA reg, mem ; 将指定存储器的16位偏移地址送指定寄存器LDS reg, mem32 ; DS:reg←(从mem32开始的4个内存字节)LES reg, mem32 ; ES:reg←(从mem32开始的4个字节) 说
源操作数必须是一个内存操作数, reg必须是一个16位的通用寄存器
例: MOV AX, 3000H MOV DS, AX MOV SI, 2000H LEA BX, [SI+10H] ; 执行LEA指令后, ( BX) =2010H LDS DI, [SI+10H] ; 执行LDS指令后,( DI) =1234H, (DS)=5678H LEA BX, BUFFER ;BUFFER=5FE0H MOV BX, OFFSET BUFFER ;(BX) =5FE0H
7.标志传送指令
格式
LAHF ! 读标志指令。 LAHF把标志寄存器低8位中的5个标志位传送到AH中的指定位SAHF ! 设置标志指令。 SAHF的功能与LAHF的功能正好相反
注意:数据传送指令中, 除SAHF和POPF这两条指令外, 其余所有指令均不影响标志位