汇编语言笔记——控制转移指令

    技术2022-07-13  80

    控制转移指令

    JMP label无条件转移指令使程序转移到指定的目标地址处,从目标地址处开始执行指令JCC label;有条件转移指令条件满足,发生转移;条件不满足,顺序执行 直接寻址:转移地址像立即数一样,直接在指令的机器代码中间接寻址:转移地址在寄存器或主存单元中

    JCC的三种应用

    判断单个标志位状态

    JZ/JE和JNZ/JNE:利用零标志ZF,判断结果是否为0或相等JS和JNS,利用符号标志SF,判断结果为正还是负JO和JNO,利用溢出标志OF,判断结果是否溢出JP/JPE和JNP/JPO,利用奇偶标志PF,判断结果中1的个数为奇还是偶JC/JB/JNAE和JNC/JNB/JAE,利用进位标志CF,判断结果是否进位或借位

    比较无符号数的高低

    利用CF确定高低,利用ZF确定相等。

    低于 JB不低于 JNB低于等于 JBE不低于等于 JNBE

    比较有符号数大小

    利用OF和SF组合确定大小,利用ZF确定相等。

    小于 JL不小于 JNL小于等于 JLE不小于等于 JNLE

    循环指令

    循环指令默认使用CX作为计数器。

    LOOP labelCX!=0,循环到labelLOOPZ labelCX!=0,ZF=1,循环到labelLOOPNZ labelCX!=0,ZF=0,循环到label

    子程序指令

    主程序需要调用子程序时,采用CALL转移到子程序的起始位置,采用RET返回主程序继续执行。 proc用于声明子程序,格式如下: 子程序名 proc

    中断指令

    改变程序执行顺序的一种方法。 INT i8

    系统功能调用

    21H中断是DOS提供给用户的用于调用系统功能的中断。

    使用步骤:

    AH设置系统功能调用号在指定寄存器设置入口参数执行指令INT 21H根据出口参数分析功能调用执行情况 AH=02H;DL=字符的ASCII码在显示器当前光标位置显示给定的字符07H响铃,08H退格,0DH回车,0AH换行AH=09H;DX=欲显示字符串首地址,以$结尾在显示器输出给定字符串回车、换行AH=01H;AL=输入字符的ASCII码获得按键的ASCII码AH=0AH;DS:DX=缓冲区首地址字符串输入AH=3CH;DX=ASCIIZ串地址 CX=文件属性;建立文件,成功返回AX=文件代号AH=3EH;BX=文件代号关闭文件AH=3FH;BX=文件代号;DX=数据缓冲区地址;CX=读取的字节数读取成功:AX=实际读入的字节数读取文件AH=40H;参数同上写文件 //输入字符串 buffer db 81//最多接收字符个数 db 0//存放实际输入的字符数 db 81 dup(0)//存放输入的字符串 mov dx,offset bbuffer mov ah,0ah//0AH字符串输入功能 int 21h

    Processed: 0.148, SQL: 9