志在指尖
用双手敲打未来

汇编语言入门(视频教程)

汇编语言入门

一、汇编语言怎么发生的
机器语言:由一串0或1组成,如果有错误解特别难发现和查找,所以发生了汇编语言,写法与人类语言相近,便于记忆,例如:
操作:寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:movax,bx
为了将汇编语言转换成核算机能读懂的机器指令,需求编译器;
二、汇编语言语法
汇编语言由三类指令组成:
(1)汇编指令:机器码的助记符,有对应的机器码;
(2)伪指令:没有对应的机器码,由编译器识别,核算机不履行;
(3)其他符号:如+、-、*、/等,编译器识别,没有对应的机器码。
指令和数据都存放在存储器中(内存),在内存中二者都是二进制的信息,没有区别,CPU如果想读写数据,需求和其他硬件交互以下三类信息:
(1)地址信息:存储单元的地址;
(2)操控信息:器材的选择,读或写的命令;
(3)数据信息:读或写的数据
这三类信息分别由地址总线、操控总线、数据总线经过电信号来传送。
由于地址总线担任指定存储单元,所以地址总线的传输才能决议了CPU能够对多少个存储单元进行寻址,假定一个CPU有N根地址线,每根线能够传递高电平或低电平两种状况,这样的CPU能够寻址2的N次方个内存单位。
数据总线担任传送数据,所以数据总线的宽度决议了CPU和外界的数据传送速度,例如8根数据总线一次就能够传送一个字节的数据。
操控总线是个总称,有多少根操控总线,意味着CPU供给了对外部器材的多少种操控;

C
为了实现上述三种信息的交互和处理,CPU内部也包含了一下器材,其间:
(1)运算器对信息进行处理;
(2)寄存器担任信息的存储;
(3)操控器担任操控各种器材进行作业。
除此之外,CPU内部也有许多总线,担任内部器材的数据传送。
2.1CPU怎么发生要拜访的内存单元的地址
每个内存单元在CPU中都有一个仅有的地址,称为物理地址,CPU经过地址总线送入存储器的是物理地址,不同的CPU有不同的发生物理地址的办法,以8086CPU为例,8086是16位机,即:
1、运算器一次最多能够处理16位的数据;
2、寄存器的最大宽度为16位;
3、寄存器和运算器之间的通路为16位。
8086CPU有20根地址总线,理论上寻址才能为1MB,但是CPU只能一次性最多处理16位的数据,所以寻址才能变为了只有64KB,为了组成一个20位的物理地址,CPU在内部用两个16位地址组成的办法,经过段地址*16+偏移地址的办法,核算得出物理地址。
比如要拜访123C8H的内存单元地址
由于CPU的这种给出物理地址的办法,使得咱们能够对内存进行分段,由于段地址*16必然是16的倍数,所以一个段的起始地址必定也是16的倍数,偏移地址是16位,所以一个段最大能够是64KB
相同的物理地址也能够经过不同的段地址和偏移地址得出。
其间段地址经过段寄存器给出,8086CPU共有四个段寄存器:CS、DS、SS、ES;
8086CPU最重要的两个寄存器分别为:CS为代码段寄存器,IP为指令指针寄存器
8086CPU的作业进程:
(1)首先从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所取指令的长度,从而指向下一条指令;
(3)履行指令,转到进程(1),重复进程。
2.2怎么修正CS、IP的地址
既然CPU怎么从何处履行指令是由CS、IP中的内容决议的,那咱们能够经过修正其间的地址,来实现对操控CPU履行特定的指令,修正CS、IP的值需求用jmp指令,例如jmp2AE3:3,履行后CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
jmp段地址:偏移地址指令功能为:用指令中给出的段地址修正CS、偏移地址修正IP;
jmp寄存器功能为:用寄存器中的值修正IP
内存能够以栈的办法进行拜访,CPU经过SS段寄存器和SP寄存器来获取栈顶元素地址
8086CPU不能直接将数值送入段寄存器
and:逻辑与指令,按位进行与运算
or:逻辑或指令,按位进行或运算
[bx+idata]、[si+idata]、[di+idata]或许[bx+si/di]表明一个内存单元,其间偏移地址为(bx)+(si)
start:
movaxdatasg
movdsax
movssstacksg
movsp16;
能够用来内存单元寻址的寄存器([x])有:bx、si、di、bp
组合形式:bxandsi、bxanddi、bpandsi、bpanddi
这几个寄存器作为偏移地址时,默许的段地址在ss中。
2.3汇编语言怎么表达数据的位置
1、立即数
直接包含在机器指令的数据,汇编语言中直接给出
movax,1addbx,2000hmoval,’a’
2、寄存器
指令要处理的数据在寄存器中,汇编语言中直接用寄存器名
3、段地址和偏移地址
数据在内存中,汇编语言顶用[X]的格式给出偏移地址,段地址能够保存在某个段寄存器中
2.4怎么指明处理数据的长度
8086CPU能够处理的长度有两种:字(word)和字节(byte)指明操作数据长度有两种办法:
1、有寄存器参与的操作,能够经过寄存器指明
egax以word为单位、al以byte为单位
2、没有寄存器的操作运用wordptr或byteptr指明
egmovwordptrds:[0],1
3、有些指令默许了操作长度
egpush只进行字操作

汇编语言入门视频教程

https://www.bilibili.com/video/av39953591/?p=1

未经允许不得转载:IT技术网站 » 汇编语言入门(视频教程)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载