今天要做什么?
汇编语言继续学习
1:用nasm编译器将asm 汇编语言后缀型文件转化成bin文件:
下载后配置i下nasm环境变量,然后nasm example.asm -f bin -o exam.bin
Mov是 6D 6f 76
3B 是;
20是空格
立即数(Immediate Value)是直接嵌入汇编指令中的常量数值,无需通过寄存器或内存地址间接获取
2:指令MOV ax,0xf5fc中,“MOV”知识这是一条 传送 指令,0xf5fc是A。指令执行后,寄存器AX中的内容是0xf5fc
3:源程序共有3行,每一行第一个字符在文件内的偏移量分别是多少
0
0x35/53,
0x40/64
4:该源程序文件的大小是多少字节 ?
这取决于最后一个文件的偏移量,上图文件中文件的偏移量最后一个字符是48,因为文件是从0开始的,所以长度是49. 换算成10进制
0100 1001 = 73个字节
5:当计算机启动时,8086处理器的状态
每种系统启动运行程序 都要求符合标准的格式。
每当我们通电开机以后,处理器都会进行硬件初始化,以及一个可选的内部自测试,然后将内部所有寄存器的内容都初始到一个预置的状态,在计算机上有一个热启动按钮,热启动按钮和RESET引脚相连,RESET引脚在处理器上,当按下热启动按钮,会像RESET引脚发送一个信号 ,这同样会导致硬件初始化和内部自测试,并将所有寄存器的内容初始到一个预置的状态
对于INTEL 8086来说,复位操作将使代码段寄存器cs的内容重置为FFFF,其他所有寄存器都重置为0包括 通用寄存器,段寄存器,指令指针寄存器
段寄存器ES,和DS一样 ES也是一个数据段寄存器,因为是一个附加的数据段寄存器,所以也叫附加段寄存器ES,为社么需要他呢,有时候可能需要在两个数据段寄存器来回调用,一个可能不够用,处理器的主要功能是取指令和执行指令,再加电和复位之后他就会立刻尝试这样的操作。
6:INTEL 8086 地址空间的分配情况
6.1 内存布局
8086 最多一次1MB 地址00000-FFFFF
处理器的主要任务是取指令和执行指令,当计算机通电后,处理器立刻开始任务 ,这是电脑设计好的,换句话说,处理器将在FFFF0这个位置,开始取用位置,并加以执行
6.2 地址分配电路
F0000-FFFFF(地址范围 ROM BIOS)
那么8086访问的是一个特殊的存储芯片,叫做ROM BIOS,这种芯片只能用来读取不能用来写入,所以叫只读存储器,简称ROM,ROM的内容是由特殊手段 预先写入的,ROM,中间是芯片,四周是插座
内存条 DRAM (00000-9FFFF)
内存由字节组成,字节由比特组成,为了节约成本,并提高容量和集成度,每个比特的存储是由一个及其微小的晶体管,以及同样是及其微小的电容来组成的,电容同样可以存放电,可以通过通电和存放电来表示比特0和比特1,我们也清楚,电容很容易泄漏电荷
当一个电容通电后 不管他,把他放在一边,他就会慢慢放电,直至存储的电荷完全消失,可以想象组成这种电容的微小电容泄漏电荷的速度是非常快的,通常会在几微秒之内漏的一干二净,所以这种内存需要定期补充电荷以维持原先保存的内容,在各个过程叫做动态刷新,因此,这种存储器也称为动态随机存储器DRAM,
刚才我们讲到 随机访问术语,随机访问的意思是 访问任何一个内存单元的速度 所花的时间和他的位置 和地址无关,举个例子:
从头到尾的一盘录音带上,歌曲的位置在录音带的位置上越靠前,所化的时间越越短
内存则不同,读写任何内存单元所需要的时间都是一样的,不管他的地址是考前还是靠后,在内存刷新期间,处理器当然是无法访问内存的,不过对于内存来说,刷新时间所在用的操作是微乎其微的,可以错开进行,这种内存的工作原理,再断电后,所有内存保存的内容都会统统消失,再开机也没东西,
A0000-EFFFF 地址区间(外部设备接口电路、接口卡(声卡、显卡、网卡等))
设备不能直接接入计算机:需要通过各自的接口电路或者接口卡接入
显卡:显示器的工作方式和处理器不同,信号也不一样,所以需要一个接口卡 来做设备信号的匹配和转换,这就叫显卡,显卡通过电缆等连接显示器,对显示器发送视频信号,还需要插在计算机的主板上。
显卡的下面有一个卡口(金手指),用来插入插槽,一旦插入之后,配对成功,显示器就通过接口卡和计算器连接起来了。
显卡上有存储器,处理器可以把要显示的文本内容写入显卡上的存储器,显卡负责将收到的数据转换成视频信号发送给显示器。
我们开始说8086处理器通电后发送的第一条指令是FFFF0,正好位于ROM中,储存一些基本指令
处理器取用指令的方式方向是从内存的低端 向高端推进,这是处理器 取指令和用指令的方式。
6.3 如何让处理器从当前位置跳到另一个内存地址处,取指令并执行
前后 随便跳
在汇编语言中,EA 本身不是标准的跳转指令注记符,但在特定架构的机器码层面可能作为跳转指令的编码片段存在,实际编程时应以具体架构的指令手册为准,避免混淆机器码与助记符合。
在特定的机器语言中EA是跳转之后,后面会跟着
偏移地址E05B和段地址F0000
JMP(JUMP) 0xF0000:0xE05B (跳转到逻辑地址F0000:E05B处读取指令并执行)