-
and和or指令
1. and指令——逻辑与指令,按位进行与运算,通过该指令可将操作对象的相应位设为0,其他位不变
2. or指令——逻辑或指令,按位进行或运算,通过该指令可将操作对象的相应位设为1,其他位不变
-
以字符形式给出的数据
1. 以“...”的方式指明数据是以字符的形式给出的,编译器把它们转化为相应的ASCII码
-
大小写转换的问题
1. 大写字母+20H=小写字母;小写字母-20H=大写字母
2. and al,11011111B 可将小写字母变为大写字母;or al,00100000B 可将大写字母变为小写字母
-
[bx+idata]
1. 表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)
-
si和di
1. 是和bx功能相近的寄存器,但是si和di不能够分成两个8位寄存器来使用
-
[bx+si]和[bx+di]
1. [bx+si]表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)
-
[bx+si+idata]和[bx+di+idata]
1. [bx+si+idata]表示一个内存单元,它的偏移地址为(bx)+(si)+idata(即bx中的数值加上si中的数值再加上idata)
(一般来说,在需要暂存数据的时候,我们都应该使用栈)
-
bx、si、di和bp
1. 只有这四个寄存器可以用在[...]中进行内存单元的寻址
2. 可以单独出现,或只能以四种组合出现
(1)单独:mov ax,[bx] mov ax,[si] mov ax,[di] mov ax,[bp]
(2)加上si或di:mov ax,[bx+si] mov ax,[bx+di] mov ax,[bp+si] mov ax,[bp+di]
(3)再加上idata:mov ax,[bx+si+idata] mov ax,[bx+di+idata] mov ax,[bp+si+idata] mov ax,[bp+di+idata]
- 寻址方式的总结
寻址方式 | 名称 | 含义 |
[idata] | 直接寻址 |
EA=idata,SA=(ds) |
[bx]、[si]、[di]、[bp] | 寄存器间接寻址 | EA=(寄存器),SA=(ds) |
[bx+idata]、[si+idata]、[di+idata]、[bp+idata] | 寄存器相对寻址 | EA=(寄存器)+idata,SA=(ds) |
[bx+si]、[bx+di]、[bp+si]、[bp+di] | 基址变址寻址 | EA=(bx或bp)+(si或di),SA=(ds) |
[bx+si+idata]、[bx+di+idata]、 [bp+si+idata]、[bp+di+idata] |
相对基址变址寻址 | EA=(bx或bp)+(si或di)+idata,SA=(ds) |
-
指令处理数据的长度
1. 8086中可以处理byte和word两种长度的数据,在机器指令中要指明是字操作还是字节操作
(1)通过寄存器指明,例如ax或者al
(2)用操作符X ptr指明内存单元的长度(X可以为word或byte)
(3)在push和pop指令当中则是默认了为字操作
-
div指令
1. div为除法指令
(1)当被除数是16位,除数为8位时:被除数默认放在ax当中,最后的商放在al中,余数放在ah中
(2)当被除数是32位,除数为16位时:被除数的高16位放在dx中,低16位放在ax中,最后的商放在ax中,余数放在dx中
-
伪指令dd
1. 与db、dw类似,dd是用来定义dword(double word,双字)型数据的
-
dup
1. dup是一个操作符,由汇编器识别处理的符号,和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复
2.例:db 3 dup (0) 定义了三个字节,值都为0,相当于db 0,0,0;db 3 dup (0,1,2) 定义了9个字节,相当于 db 0,1,2,0,1,2,0,1,2
3.格式:
(1)db 重复的次数 dup (重复的字节型数据)
(2)dw 重复的次数 dup (重复的字型数据)
(3)dd 重复的次数 dup (重复的双字型数据)
来源:https://www.cnblogs.com/kwcymino/p/10071817.html