div指令
div指令是除法指令。使用div做除法:
1)除数:有8位和16位两种,在一个寄存器后内存单元中。
2)被除数:默认放在AX或DX和AX中,如果除数为8位,被除数为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高位16位,AX存放低位16位。
3)结果:如果除数为8位,则AL存储除法操作的商,ah 存储除法操作的余数;如果除数为16位,则AX存放除数操作的商,DX存储除法操作的余数。
格式如下: div reg(寄存器集合) div 内存单元
除数位数 8位 16位
隐含的被除数 AX DX-AX 商 AL AX 余数 AH DX 举 例 DIV BH DIV BX 伪指令——dd
dd:定义dword型数据,每个双字占用二个连续的字单元(4字节) dup
dup用来进行数据的重复 使用格式如下:
db 重复的次数 dup (重复的字节型数据) dw 重复的次数 dup (重复的字型数据) dd 重复的次数 dup (重复的双字型数据)
例:db 3 dup (0) db 3 dup (0,1,2)
db 3 dup (‘abc’, ‘ABC’)
dw 3 dup (10h, 2 dup (1,2,3))
第九章 转移指令的原理
修改IP,或同时修改CS和IP的指令统称转移指令
8086CPU的转移可以分为: 段内转移:只修改IP,如jmp ax
段间转移:同时修改CS和IP,如 jmp 1000:0
段内转移又可分为:
短转移:-128~127(即IP的修改范围) 近转移:-32768~32767
8086CPU的转移指令: 无条件转移指令 条件转移指令 循环指令 过程 中断
操作符offset
格式:offset 变量/标号
功能:取得变量或标号的偏移地址 例如:
assume cs:codesg codesg segment start:mov ax,offset start s:mov ax,offset s codesg ends end start
依据位移进行转移的jmp指令
CPU在执行jmp指令的时候并不需要转移的目的地址,而是通过翻译出的机器码中的指令码表示位移进行转移.