汇编语言(8086)前11章学习笔记

目录

寻址规则

寄存器

flag 标志寄存器(标志)

指令

mov

ADD

SUB

INC/DEC 自增/自减

AND/OR 与/或

MUL 乘

DIV 除

LOOP 循环

JUMP 跳转

JCXZ 条件转移指令

PUSH/POP 压入/弹出

db dw dd(伪指令

DUP (伪指令

CALL/RET 函数调用

adc 带进位加法指令(与标志寄存器相关

sbb 借位减法指令

cmp 比较指令

je jne jb jnb ja jna

movsb

movsw

pushf/popf


段地址*16+偏移地址=物理地址

寄存器

CS:存放指令段地址

IP: 存放指令偏移地址

DS:存放数据段地址,是除IP默认段寄存器

ES:附加段寄存器

AX(AL,AH),BX, CX,DX

SI,DI:与BX功能相近,但无法分成两个8位寄存器使用

SS:存放栈的段地址

SP:存放栈的偏移地址,指向栈保存的最新数据

BP:存放栈的偏移地址,用于如指向函数数据,搭配SS使用

FLAG:标志寄存器

flag 标志寄存器(标志)

ZF:位于flag第6位,零标志位,记录上一运算结果是否为0,结果为0则保存1,反之保存0

PF: 位于第2位,奇偶标志位,记录上一运算结果中1的个数是否为偶数,1的个数为偶数则保存1,反之保存0

SF:位于第7位,符号标志位,记录上一运算结果是否为负,如果是负数则保存1,反之保存0

CF:位于第0位,进位标志位,记录上一运算结果数据是否出现进位或借位,如出现则保存1,反之保存0

OF:位于第11位,溢出标志位,记录上一运算结果数据是否出现溢出,如出现则保存1,反之保存0

DF:位于第10位,方向标志位,与movsb,movsw指令相关,df=0,si di++,df=1,si di--

指令

mov

例:

mov word ptr ds:[0],1 遵循无歧义原则

mov byte ptr ds:[0],1

mov ax,bx

mov ax,[bx+1]

不可对段地址直接mov,可用其他寄存器间接

可用到操作符

PTR

[指令] [word/byte] ptr [操作]

OFFSET

s:mov ax, offset s 将s标号的偏移地址存入ax

ADD

SUB

INC/DEC 自增/自减

AND/OR 与/或

MUL 乘

两数必须都是8位或16位

8位时,一个默认在al,16位时,一个默认在ax。

结果:8位默认存在ax,16位时默认高位在dx,低位在ax

例:mul byte ptr ds:[0]

DIV 除

除数:8位/16位

被除数:默认存放在ax或dx和ax,除数8位时,被除数16位,默认ax,除数16位时,被除数32位,高位dx,低位ax,

结果:除数8位时,al存放商,ah存放余数,除数位16时,ax存放商,dx存放余数

例:div byte ptr ds:[0]

LOOP 循环

cx作为循环次数依据,每次开始自动dec cx,cx为0时则跳出

单层循环:

s:[代码段]

loop s ; 跳转到标号为 s 的代码上继续执行

多层(嵌套)循环:

由于loop共用cx作判断

可使用栈在循环前push cx来保存

JUMP 跳转

jump标号

jump short 标号

段内短转移,只改变ip,偏移偏移地址8位,范围-128~127

jump near ptr 标号

段内近转移,只改变ip,偏移偏移地址16位,范围-32768-32767

jump far ptr 标号

段间/远转移,改变cs和ip

jump地址

jump word ptr 内存单元地址(段内

例:jmp word ptr ds:[0]

jmp word ptr [bx]

jump dword ptr 内存单元地址(段间

高处为段,低处为偏移

jump 寄存器

JCXZ 条件转移指令

当cx=0,转移。只有短转移

例:jcxz short s

PUSH/POP 压入/弹出

push/pop 寄存器

push/pop 地址

db dw dd(伪指令

db 定义字节大小

dw 定义字大小

dd 定义双字大小

例:

db 1,2,3,4

DUP (伪指令

[db/dw/dp] [需要生成的数量] dup ([值],..)

例:dw 3 dup (0) 同 dw 0,0,0

CALL/RET 函数调用

通过call ret实现函数效果

call标号

作用类似 push ip

jmp near ptr 标号

call far ptr 标号

作用类似 push cs

push ip

jmp far ptr 标号

call 寄存器

call 地址(类比jump

ret

作用类似 pop ip

pop cs

jmp cs:ip

adc 带进位加法指令(与标志寄存器相关

abc ax,bx

相当于 ax=ax+bx+CF

sbb 借位减法指令

sbb ax,bx

相当于ax=ax-bx-CF

cmp 比较指令

cmp ax,bx

即 sub ax,bx,但不保存值却影响标志寄存器

如:

当ax==bx zf=1

当ax!=bx zf=0

当ax<bx 产生借位cf=1

当ax>=bx cf=0

je jne jb jnb ja jna

p226

movsb

将ds:si指向内容的字节放到es:di

若df=0,sidi++,若df=1,sidi--

movsw

同movsb,但传送大小为字

通常和rep搭配

rep movsw相当于

s:movsw

loop s

用于存放大量数据

pushf/popf

将标志寄存器的值压入栈与将栈中数据弹出到标志寄存器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值