汇编学习 NO4

1.and指令:逻辑与指令,按位进行与运算,即:1 and 1=1,0  and 0=0, 1 and 0=0

2.or指令:逻辑或指令,按位进行或运算,即:1 or 0=0,1 or 1=1,0 or 0=0.

3.文本编辑过程:按下键盘的"A"键,这个按键的信息会被送入计算机,计算机用ASCII码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡上的显存中,工作在文本模式下的显卡,用ASCII码的规则解释显存中的内容,61H被当作字符"a",显卡驱动显示器

4.db :define byte 定义字节

5.小写字母的ASCII码值比大写字母的ASCII码值大20H

6.[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata,即bx中的数值加上idata.

7.(ax)=((ds)*16+(bx)+200) 该指令可以写成:  ①.mov ax,[200+bx]   ②. mov ax,200[bx] ③.mov ax,[bx].200

8.SI和DI是8086CPU中和bx功能相近的,但是SI和DI不能够分成两个8位寄存器

9.[bx+si]和[bx+di]的含义相似,它的偏移地址为(bx)+(si),可以写成mov ax,[bx][si]]

10.mov ax,[bx+si+idata]含义如下:将一个内存单元的内容送入ax,这个内存单元的长度为2个字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值再加上idata,段地址在ds中

11.(ax)=((ds)*16+(bx)+(si)+idata)有几种格式:mov ax,[bx+200+si],mov ax,[200+bx+si]

mov ax,200[bx][si],mov ax,[bx].200[si],mov ax,[bx][si].200   

12.小结:[idata]用一个变量来表示地址,可用于直接定位一个内存单元.

            [bx]用一个变量表示内存地址,可用于间接定位一个内存单元

            [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元

            [bx+si]用两个变量表示地址

            [bx+si+idata]用两个变量和一个常量表示地址

13.一般来说,在需要暂存数据的时候,我们都应该使用栈.

14.BX SI DI BP,在8086CPU中只有这4个寄存器可以用在"[…]"中进行内存单元的寻址.在[…]中,这4个寄存器可以单个出现,或只能4种组合出现:bx和si,bx和di,bp和si,bp和di.

15.只要在[…]中使用bp,而指令中没有显性地给出段地址,段地址就默认在SS中

16.在机器指令这一层,它并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置,指令在执行前,所要处理的数据可以在三个地方:①.CPU内部 ②.内存 ③.端口

17.汇编语言中用三个概念来表达数据的位置: ①.立即数(idata)

                                                                    对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为:立即数(idata),在汇编语言中给出

                                                                 ②.寄存器

                                                                    指令要处理的数据在寄存器当中,在汇编指令中可给出相应的寄存器名.

                                                                ③.段地址和偏移地址

                                                                    指令要处理的数据在内存中,在汇编指令可用[x]的格式给出EA,SA在每个段寄存器中.存放段地址的寄存器可以是默认的.

mov ax, [0]/mov ax,[di]/mov ax,[bx]/mov ax,[bx+si]这些指令在,段地址默认在ds中.

mov ax.[bp]/mov ax,[bp+si]这些是在默认在ss中

18.8086CPU的指令可以处理两种尺寸的数据,byte和word,所以在机器指令中要指明指令进行的是字操作还是字节操作

    共有两种方法来处理:   ①.通过寄存器名指明要处理的数据的尺寸,比如 mov ax,...这是进行字操作,mov al,...这是进行字节操作

                                     ②.在没有寄存器名存在的情况下,用操作符"X ptr"指明内存单元的长度,

                                     word ptr指明了指令访问的内存单元是一个字单元

                                     byte ptr指明了指令访问的内存单元是一个字节单元

19.push指令只进行字操作.

20.div:除法指令:

                        除数有8位和16位两种,被除数默认在AX或AX和DX当中存放,当被除数为16位时,默认在AX中存放,如果除数为32位,则被除数在DX和AX中存放,DX存放高16位,而AX存放低16位.

                        结果:如果除数为8位,则AL存储除法操作的商,AH存放除法操作的余数,如果除数为16位,则AX存储除法操作的商,DX存放除法操作的余数.

21.db:定义字节型数据     dw:定义字型数据   dd:定义双字型数据

22.dup:也是有编译器识别处理的符号,例如 dp 3 dup (0)===定义了三个字节,它们的值都为0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值