程序是怎么跑起来的(下)

汇编简介

单元前问题

  • 本地代码的指令中,表示其功能的英文缩写称为什么
    助记符

  • 汇编语言文件的拓展名,通常是什么格式
    .asm

  • 汇编语言程序中的段定义指的是什么
    构成程序的命令和数据的集合组

汇编语言和本地代码是一一对应的

由来

  • 通过调查本地代码的内容,可以了解程序最终是以何种形式来运行的,但是,直接看本地代码看不懂,于是人们就使用助记符来帮助理解,使用助记符的编程语言成为汇编语言

名词

  • 汇编语言编写的源代码,最终也必须要转换成本地代码才能运行,负责转换工作的程序称为汇编器
  • 用汇编语言编写的源代码,和本地代码是一一对应的。因此,本地代码也可以反过来转换成汇编语言的源代码,持有该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编

汇编程序讲解

源代码
在这里插入图片描述在这里插入图片描述
汇编代码
注:彩色部分是转换成注释的C语言源代码
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

伪指令

解释:

  • 汇编语言的源代码,是由转换成本地代码的指令(操作码)和针对汇编器的伪指令构成的。
  • 伪指令:负责把程序的构造及汇编的方法知识给汇编器,不过伪指令本身是无法汇编转换成本地代码的

在这里插入图片描述在这里插入图片描述
说明

  • segment 和ends围起来的部分,称为段定义,段定义即命令和数据等程序的集合体的意思。
    在这里插入图片描述- group:表示的是吧_BSS和_DATA着两个段定义汇总为名为DGROUP的组
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
汇编语言的语法是操作码+操作数

操作码
在这里插入图片描述在这里插入图片描述

寄存器是CPU的存储区域,不过,寄存器并不仅仅具有存储指令和数据的功能,也有运算功能
在这里插入图片描述

mov

在这里插入图片描述dword ptr(double word pointer)表示的是从指定内存地址读出4字节的数据

push pop

对栈进行读写的内存地址是由esp寄存器进行管理,push 和pop后,esp寄存器的值会自动更新

函数调用

在这里插入图片描述
call指令运行后,call指令的下一行的内存地址会自动push入栈
该值会在函数最后调用ret指令pop出栈
在这里插入图片描述
最优化功能

在这里插入图片描述

函数内部

在这里插入图片描述

  • ebp寄存器在(1)中入栈在(5)中出栈,主要是为了把函数中用到的ebp寄存器的内容,恢复到函数调用前的状态
  • (2)中esp赋值给ebp,是因为,nov不允许指定esp寄存器
  • (3)读取参数123,eax是负责运算的累加寄存器
  • 函数的返回值必须通过eax寄存器返回
  • 函数的参数是通过栈来传递,返回值时通过寄存器来返回的
  • 栈的最高位的数据地址,一直存储在esp寄存器中
  • (6)执行,函数返回目的地的内存地址会自动出栈
整个过程栈变化

在这里插入图片描述在这里插入图片描述

全局变量 局部变量

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

局部变量只是在函数处理运行器件临时存储在寄存器和栈上。函数中的局部变量所需要的内存领域,会被尽可能地分配在寄存器中,(8)就相当于给5个局部变量c1-c5分布赋予数值1-5。寄存器不够时,局部变量就会申请分配栈的内存空间。(9)中给c6-c10分配栈空间。

在这里插入图片描述

循环处理的实现方法

在这里插入图片描述第一行异或结果永远是0

条件分支的实现方法

在这里插入图片描述
在这里插入图片描述

了解程序运行方式的必要性

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

硬件的控制方法

端口

  • I/O控制器中有用于临时保存输入输出数据的内存,这个内存就是端口。I/O控制器内部的内存,也称为寄存器
  • 一个I/O控制器既可以控制一个外围设备,也可以控制多个外围设备。各端口之间通过端口号进行区分。端口号也称为I/O地址。
  • IN指令和OUT指令在端口号指定的端口和CPU之间进行数据的输入输出
  • 通过指定端口号,并利用IN/OUT命令,就可以直接控制软驱这硬件设备,实现输入输出处理

I/O端口号 IRQ DMA通道

  • 是识别外围设备的三点组合。计算机主机通过软件控制硬件时所需要的信息的最低限,是外围设备的I/O端口号。IRQ只对需要中断处理的外围设备来说是必需的。DMA通道只对需要DMA机制的外围设备来说是必需的

文字及图片显示机制

  • 显示器中显示的信息一直存储在某内存中,该内存称为VRAM(Video RAM),在程序中,只要往VRAM中写入数据,该数据就会在显示器中显示出来。

在这里插入图片描述

让计算机思考

举了一个猜拳的程序
刚开始,使用随机数出拳
后面通过算对方出拳情况的概率,来出拳
到后面加入人类的思考方式,即人类是有类似与节奏短语样子的出拳,这样程序就有了自己的出拳节奏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值