1.4 汇编语言

1. 机器语言与汇编语言

1.1 机器语言简介
对于计算机来说,能识别的只有0,1两个数字。最早的时候,程序员就是用0,1这2个符号来进行编码,不如远古时期的纸带卡片,使用打孔来代表1,不打孔代表0,然后通过纸带机或卡片机来识别运行这种0,1程序。

这种程序方便计算机运行,但是却是不容易让程序员进行编写的。

1.2 汇编语言简介

人们通过编写汇编指令,然后使用汇编编译器编译成机器语言。汇编语言比机器语言更容易阅读识别

比如

操作:寄存器BX的内容送到AX中

1000100111011000              // 机器指令
mov ax,bx                    // 汇编指令

2. 指令执行

2.1 指令寻址

cs寄存器,ip寄存器

每次从 [cs,ip] 取一条指令执行,执行后ip值增加,指向下一条指令

CPU执行时,会一直的从内存单元中读取指令,坊到指令缓冲器执行。而取指令时,是根据CS寄存器和IP寄存器来获取一个地址
[CS:IP]。这个地址指向内存单元中的代码段。CPU从中读取一条指令执行,然后IP指向下一条指令,继续读取执行。如此循环。
[CS+IP]:CS=段地址,IP=偏移地址。CPU一直从[CS+IP]指向的内存单元处读取指令。

2.2 访问数据
当CPU需要获取一个数据时,这时候代码段中能够获得的是DS寄存器和一个偏移地址。
[DS*0x10 + 偏移地址],指定地址时候可以不显示的写出DS。
这个地址指向内存单元中的数据。CPU根据这个地址获取到需要的数据。
基本地址:DS存储的是基本地址,但是在程序中段寄存器DS一般可以不显示说明。只用 [偏移地址] 来表示内存单元的地址。
偏移地址:是一个常数,可以直接使用数字来表示,比如:[553]。也可以使用BX,BP,SI,DI(其他的寄存器不能表示内存地址)中的值来表示。比如[BX]
[DS+BX]:DS=段地址,BX=偏移地址,内存单元地址为DS*0x10+BX。计算其寻址能力根据可指定的内存范围大概为0-1M之间。

2.3 指令跳转

当CPU执行完一块内存中的代码段时,使用JMP命令来修改CS寄存器和IP寄存器的值。从而控制计算机指令执行的跳转。

jmp:jmp指令转移就是修改cs,ip寄存器的指向。来完成跳转的功能。JMP导致[CS:IP]指向新的内存单元,CPU从新的内存单元读取指令。

转载于:https://www.cnblogs.com/mlzrq/p/10182252.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值