汇编语言 学习笔记(updating...)

本文是关于汇编语言的学习笔记,探讨了CPU如何通过存储地址和控制指令进行数据读写,讲解了地址总线、数据总线的概念,以及物理地址的计算方法。同时,介绍了8086CPU的20位地址总线与16位CPU结构的矛盾,实模式寻址方式以及不同寻址方式的灵活运用。还涉及宏汇编的使用,以及数据类型的指定和判断指令长度的方法。
摘要由CSDN通过智能技术生成
 
《汇编语言》王爽 《IBM-PC汇编语言程序设计》学习笔记
  为什么会有汇编语言? 因为机器码难记,难改错,所以出现了汇编语言,即用更自然的语言表示机器码。 由汇编语言到机器语言需要编译器的参与,我们在写汇编语言的时候不仅写汇编的指令,还写一些伪指令,这些伪指令是计算机不会执行的,其他的一些运算符号也是由编译器识别,而没有对应的机器码。
存储器是数据和指令存储的地方,就像人类的记忆系统。名字不一样,但对计算机而言,指令和数据是没有差别的,它们都是以二进制的方式存储。(那么CPU如何知道它是程序还是指令呢?)CPU可以直接使用的信息就存放在存储器中。

     好,接下来,CPU要开始对数据进行读写了。它怎么知道数据在哪里呢?所以需要存储地址;是要进行读操作还是写操作呢?所以需要控制指令,数据又如何进行传输呢?这三种信息都有总线进行传输。逻辑上分为三种总线,是三种,不是三根。
     地址总线,每根线有两种稳态,高和低,即1和0; n根线能够表示2的n次方个地址数据
     数据总线传送大小同理。
     内存地址空间,cpu通过总线与外围存储器(RAM,ROM)相连接,在CPU看来,不同的设备都是一样的存储器,都当它们是内存。即形成了一个逻辑上的存储器。当然,它是假想的。
    


CPU工作原理这句话是什么意思?由寄存器实现CPU的功能吗?改变寄存器实现对CPU的控制,什么意思?改变CPU中寄存器中的值,也就是控制本身了吗?

     物理地址的获得,因为20与16的矛盾,使用所以需要两16来拼为20,即一个16左移一位,与另一个16相加。物理地址=基础地址( 段地址*16)+偏移地址。

提供段地址的寄存器即段寄存器,有:CS、DS、SS、ES.

and or 指令

大小写转化 无法用现在已经学过的知识解决,就重新观察,寻找规律。
[bx+idata] 数组结构 高级语言提供便利
idata[si/di]
2[si] 3[si] 从不同的地方开始,但每次偏移数相同 
不同寻址方式的灵活运用
从更加结构化的角度来看待所要处理的数据
一般来说,在需要
暂存 数据的时候,我们都应该使用栈。

数据:数据在哪里?有多大?
--------
疑问:

我们给存储单元编号,而现实中不是没有真的编号吗?计算机是如何识别不同位置的呢?地址信息,由地址总线传输。

规定固定的机器码对应固定的操作,指令。

芯片是什么?外围芯片组是什么?

为什么8086CPU有20位的地址总线,却只有16位的CPU结构?这不是很矛盾吗?
所以有实模式寻址方式。
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

例题:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值