汇编语言的学习

现在来看王爽的《汇编语言》的书籍,前面两章看起来蛮简单的,这里从第三章开始,把疑难点的写下来。

三、寄存器(内存访问)

1、内存中字的存储特点:字存储的时候占两个连续的存储单元。

2、段寄存器DS特点:给DS赋值时,需要通过普通寄存器或者内存单元来中转,而不能直接用数值赋值。

举例:mov ds 1000H      //非法的

                   mov  ax  1000H

  mov ds ax              //合法

3、汇编语言中【...】意义:中括号中的数值代表的是地址偏移量,而整个物理地址需要 段地址(DS)*16+偏移量=物理地址.

例如:mov al [5]    //把地址 ds:5的数值传给al

4、寄存器和内存单元传送数据的一个规律:传送字数据的时候是两个字节的传送,即需要传送两个连续的内存单元数据。

例如:

地址数据
1000023
1000145
1000267
MOV AX 10000H

MOV DS AX            //段地址赋值

MOV BX [0]           //BX=4523H

MOV CX [1]          //CX=6745H

5、栈存放数据的类型:存放函数的参数值和局部变量,由编译器自动操作的。

6、栈数据输出和输入的规律:LIFO(last in fist out)后进先出。

7、栈的特殊寄存器:SS 和SP ,即段寄存器和偏移量寄存器,通过这两个寄存器CPU就可以在内存中识别和取栈中的数据。

四、用汇编语言编写程序

1、编写程序的工具:edit、记事本

2、生成可执行文件的流程:用源文件编译生成目标文件,然后通过连接生成可执行文件。

3、可执行文件的内容:包含程序(编译成的机器码)和数据,以及一些描述信息(所占内存)

4、汇编程序中有end 和ends区别:end是编译结束的标志,故编译程序的最后都有个end,而ends则是某个段的结束。

七、更灵活的定位内存地址的方法

1、汇编语言中的大小写转换如何进行:因为大小写字母最终都是按照ASCII码表转换为二进制,这两者之间相差一个固定的值20H,所以可以根据这规律来转换。用二进制进行与或也可以的。

2、指针加偏移量【bx+data】的写法:这指针不是指段指针,是指偏移量的指针,这写法有三种:

mov ax,[bx+200]

mov ax,200[bx]

mov ax,[bx].200

八、数据处理的两个基本问题:

1、用作偏移量的寄存器有几种:BX、bp、si、di

2、数据存储的位置:内存(代码段+数据段+堆栈段)、cpu内部(寄存器+缓冲器)、端口

3、数据位置的表达:偏移量为idata、bx、si、di一般为数据段中,而BP的话一般在堆栈段中。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高速上的乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值