《汇编语言》王爽 《IBM-PC汇编语言程序设计》学习笔记
为什么会有汇编语言? 因为机器码难记,难改错,所以出现了汇编语言,即用更自然的语言表示机器码。 由汇编语言到机器语言需要编译器的参与,我们在写汇编语言的时候不仅写汇编的指令,还写一些伪指令,这些伪指令是计算机不会执行的,其他的一些运算符号也是由编译器识别,而没有对应的机器码。
存储器是数据和指令存储的地方,就像人类的记忆系统。名字不一样,但对计算机而言,指令和数据是没有差别的,它们都是以二进制的方式存储。(那么CPU如何知道它是程序还是指令呢?)CPU可以直接使用的信息就存放在存储器中。
好,接下来,CPU要开始对数据进行读写了。它怎么知道数据在哪里呢?所以需要存储地址;是要进行读操作还是写操作呢?所以需要控制指令,数据又如何进行传输呢?这三种信息都有总线进行传输。逻辑上分为三种总线,是三种,不是三根。
地址总线,每根线有两种稳态,高和低,即1和0; n根线能够表示2的n次方个地址数据。
数据总线传送大小同理。
内存地址空间,cpu通过总线与外围存储器(RAM,ROM)相连接,在CPU看来,不同的设备都是一样的存储器,都当它们是内存。即形成了一个逻辑上的存储器。当然,它是假想的。
地址总线,每根线有两种稳态,高和低,即1和0; n根线能够表示2的n次方个地址数据。
数据总线传送大小同理。
内存地址空间,cpu通过总线与外围存储器(RAM,ROM)相连接,在CPU看来,不同的设备都是一样的存储器,都当它们是内存。即形成了一个逻辑上的存储器。当然,它是假想的。
CPU工作原理这句话是什么意思?由寄存器实现CPU的功能吗?改变寄存器实现对CPU的控制,什么意思?改变CPU中寄存器中的值,也就是控制本身了吗?
and or 指令
[bx+idata] 数组结构 高级语言提供便利
idata[si/di]
2[si] 3[si] 从不同的地方开始,但每次偏移数相同
不同寻址方式的灵活运用
从更加结构化的角度来看待所要处理的数据
一般来说,在需要 暂存 数据的时候,我们都应该使用栈。
--------
疑问:
所以有实模式寻址方式。
8086CPU为什么不支持将数据直接送入段寄存器呢?这属于硬件设计问题。(==)
?
word ptr指定类型
如何判断一个指令的长度?
如何判断一个指令的长度?
—————————————————
宏汇编
宏汇编
就像模块化的函数,直接进行调用,实现一定的功能。
-------------
lable:
buffer1 lable word
buffer2 db 20 dup(?)
同一数据定义了两种类型,使得数据匹配。
this:
buffer1 equ this word
buffer2 db 20 dup(0)
mov ax,buffer1相对于 mov ax,word ptr buffer2
例题:
例题: