8086汇编-第一个程序(4)
1.一个源程序从写出到执行的过程1.一个汇编语言从写出到最终执行
123451.编写:用文本编译器,用汇编语言编写编写汇编源程序 记事本,Nodepad++, UltraEdit2.编译连接 1.使用汇编语言编译程序【MASM.EXE】对源程序文件中的源程序进行编译,生成目标文件 2.用连接程序【LINK.EXE】对目标文件进行连接,生成可在操作系统中直接运行的可执行文件
2.可执行文件包含:
121.程序【从源程序中的汇编指令翻译过来的机器码】和数据【源程序中定义的数据】2.相关的描述信息【程序有多大,要占多少内存空间】
3.执行可执行文件的程序
121.在操作系统中,执行可执行文件中的程序2.操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如:设置CS:IP指向第一条要执行的指令)然后由CPU执行程序
2.源程序1234567891011assume cs:codesgcodesg segmentstart: mov ax,0123H mov bx,0456H add ax,bx add ax,ax mov ax ...
8086汇编-寄存器-内存访问(3)
3.1内存种字的存储1.一个内存单元的大小是1B,任何两个地址连续的内存单元,N号单元和N+1号单元,可以将他们看成两个内存单元,也可以看出一个地址为N的字单元中的高位字节单元和低位字节单元
**两个十六进制位是一个字节
12340地址单元中存放的字节型数据:20H0地址单元中存放的字型数据:4E20H后面的是高位
3.2DS和[address]1.CPU要读取一个内存单元的时候,必须先给出 这个单元的地址;
2.在8086CPU中,内存地址由段地址和偏移地址组成
3.8086CPU中由一个DS寄存器,通常用来存放要访问的数据的段地址
1CS寄存器就是当前要读取指令的地址。
4.例子:我们要读取1000H单元的内容,可以用如下的程序进行
123mov bx,1000H //这里就是在bx寄存器中放入了1000H这个数据mov ds,bx //把bx寄存器中的1000H数据放到DS寄存器中mov al,[0] //[0],这里是偏移地址的意思,CPU在用到偏移地址的时候,会先去找到段地址,在第二部已经把段地址设置成1000H了,所以这句话的意思就是把地址位1000:0的数据放入 ...
8086汇编-寄存器-CPU互作原理(2)
CPU概述1.一个典型的CPU由运算器,控制器,寄存器等器件组成,这些器件靠内部的总线相连
2.区别:
12内部总线:是CPU内部的【用于运算器,控制器,寄存器】外部总线:是我们之间学的那些【用于和主板联系的-->地址总线,数据总线,控制总线】
3.内部总线实现CPU内部各个器件之间的联系
4.外部总监实现CPU和主板上其他器件的联系
寄存器概述1.8086CPU有14个寄存器
12AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
2.1通用寄存器1.8086CPU所有的寄存器都是16位的,可以存放2个字节,也就是一个字
2.AX BX CX DX 通常用来存放一般性数据被称为通用寄存器
3.AX
一个16位寄存器可以存储一个16位的数据
比如:数据18 –> 二进制表示是10010
一个16位寄存器所能存储的数据的最大值是多少呢?
12^16 - 1 --> 二进制就是1111,1111,1111,1111
4.为了保持和上一代CPU中的寄存器【都是8位】的兼容性,这4个寄存器可以分为2个独立的8位寄 ...
张明宇的博客计划
为了监督我的学习和记录我的成长,我的博客计划是:
一周一小更,一个月一大更。每周天晚上写一写最近的学习情况和内容【可以是几个字也能是几百字】。每一个月写一个收获到的知识内容,或者这一个月所得到的东西。
会开放一个计划想法区:把突发奇想的东西都放上去。
会开放一个娱乐区:用来记录我学后的放松娱乐。
会开放一个日常笔记区:把写的笔记都上传到一个地方,并且把不同的笔记内容进行分类。【该功能还在探索】【因为是刚刚开始学,所以很多笔记可能有不当之处】
会开放一个汽车展览区:帅气的汽车都放上去。
会开放一个剪辑区:把酷酷的视频和美美的视频放上去。
由于我对渗透测试和二进制安全都蛮有兴趣的,加上我还年轻【才大一,刚刚接触这个网络】所以我可能两个方向都会学一学,在未来的日子里定下专攻的方向。
因为是才刚刚搭建起来的博客,很多地方都不很懂,并且有很多的东西都还未能开放【还不太会】。所以请大家多给建议,谢谢。
以前浪费的时间太多,希望我能在搭建该博客后能自觉,自立的进行学习。
只要即可起步,永远都不会嫌迟。
细节决定成败,习惯成就未来。
来自皮皮虾的正能量【简单的记录一下神评,下次我 ...