8086指令(20根地址线)
mov指令
;在mov指令中 当 目的操作数 为段寄存器时, 源操作数 只能为寄存器或者为内存地址
div和idiv指令
div 无符号 除法
;div byte [0x0023]
;第一类 16b / 8b
;被除数事先存放到ax寄存器中
;除数8位通用寄存器或者内存单元
;商存放到AL
;余数存放到AH
;-------------------------------------
;div word [0x0023]
;第二类 32b / 16b
;被除数高16b放在dx中,低16b放在ax中
;除数16b通用寄存器或者内存单元
;商放在ax中
;余数放到dx中idiv 有符号 除法
movsb mobsw cld std rep指令
movsb : 传送字节为单位
movsw: 传送字为单位
cld : 设置方向位(DF)为0
std : 设置方向位(DF)为1
rep : CX 不为0 ,则重复movsb 和 movsw 是段之间数据传送
data db 0,1,2,3
;为执行movsw 初始化一系列寄存器
mov ax,0x7c0 ;设置 原始串的段地址
mov ds,ax
mov ax,0xb800 ;设置目的地址段地址
mov es,ax
mov si,data ;设置 原始数据的 偏移地址
mov di,0 ;设置 目的偏移地址
cld ;设置传送方向(正向) std(反向)
mov cx,data/2
rep movsw ;执行完一次movsw后,cx减一,当cld时,正向传送,si,di加2
;当CX为0则顺序执行,否则继续执行movsw
loop
;循环指令:loop
;1.CX 减一
;2.if(cx!=0) 跳转到指定位置执行 else 循序执行后面指令
寄存器
;8086中可以用寄存器来当偏移地址,只能使用BX,SI,DI,BP
;通用寄存器
;AX : 累加器 CX:计数器 DX:数据寄存器
;与外设进行数据传送寄存器
;SI : 源索引寄存器 DI:目的索引寄存器
neg
取反指令
neg ax
neg byte [bx]
cbw cwd
cbw 寄存器AL中有符号数扩展到整个AX
cwd 将寄存器AX中有符号数扩展到DX:AX