汇编语言第七、八章总结

无人久伴 提交于 2020-01-10 01:45:29
  • 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 (重复的双字型数据)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!