码迷,mamicode.com
首页 > 其他好文 > 详细

汇编基础知识

时间:2014-05-02 23:41:43      阅读:430      评论:0      收藏:0      [点我收藏+]

标签:style   数据   使用   new   mil   word   

1.SI和DI

功能和bx相似,只是不能分成2个8寄存器使用。


2INC ax指令

将寄存器的内容加1

mov ax,0

inc ax

执行完毕ax=1


3.bx,si,di,bp寄存器

CPU的核心是寄存器,学习汇编这么一段时间,我也深刻体会到对寄存器理解的重要性

(1)在8086CPU中,只有这4个寄存器可以在[...]中来进行内存单元的寻址。比如下面指令是正确的。

mov ax,[bx]

mov ax,[bx+si]

mov ax,[bp]

mov ax,[bp+si]

mov ax,[bp+di]

而下面的指令是错误的:

mov ax,[cx]

mov ax,[ax]

mov ax,[dx]

mov ax,[ds]

(2)在[...]中,这4个寄存器可以单个出现,或者只能以四中组合出现:bx和si、bx和di、bp和si、bp和di

比如下面的指令是错误的:

mov ax,[bx+bp]

mov ax,[si+di]


(3)只要在[...]中使用寄存器bp,而指令中没有显性给出段地址,段地址就默认在ss中,比如:

mov ax,[bp] 含义:(ax)=((ss)*16+(bp))

mov ax,[bp+idata] 含义:(ax)=((ss)*16+(bp)+idata)

4.存放段地址的寄存器也可以显示给出,比如:

mov ax,ds:[bp]

mov ax,es:[bx]


5.指令要处理的数据有多长?

8086CPU的指令,可以处理俩种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作。对于这个问题,汇编语言如下处理:

(1)通过寄存器指明

mov ax,1

mov bx,ds:[0]

上面都是word

mov al,1

mov al,bl

上面都是byte

(2)在没有寄存器的情况下,用操作符X ptr指明内存单元长度,X可以是word或者byte

mov word ptr ds:[0],1

inc word ptr [bx]

inc word ptr [bx],2

汇编基础知识,布布扣,bubuko.com

汇编基础知识

标签:style   数据   使用   new   mil   word   

原文地址:http://blog.csdn.net/getnextwindow/article/details/24830303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!