第2天:汇编语言与Makefile
汇编语言指令
- ORG:origin,指定程序从某个地址开始,即把程序装载到内存的某个地址。 如:ORG 0x7c00,0x7c00作为是英特尔指定的。
- JMP:jump,跳转指令。
- entry, msg, loop:自定义标签,随便是什么都可以,代表了某个地址,仅仅代表单纯的数字,通过ORG计算出来的,用于指定JMP指令跳转目的地。
- MOV:move,赋值。如:MOV AX, 0,表示“AX = 0”。 值得注意的是,例如MOV SS, AX,SS被赋值后,AX原来的值还在,并没有变空。而且,MOV源数据和目的数据的位数必须相同。
- []:表示内存地址,但只有BX、BP、SI、DI可以,其他寄存器不行,因为CPU没有处理这种指令的电路,也就是没有表示这种处理的机器语言,又是英特尔的“杰作”。
- CMP:常与JE、JNE连用,变成if语句。
- INT:中断指令,目前可看作函数调用。如:INT 0x10,调用16号函数。
- HLT:halt,让CPU进入状态,只要按下键盘、移动鼠标等,CPU就会醒过来。
- 汇编语言出现的数字,有0x前缀的就是十六进制,无前缀就是十进制。
- 关于MOV指令:
- ”MOV BYTE [678], 123“:移动8位二进制数到[678],[678]这个单元刚好能存下。
- "MOV WORD [678], 123":移动16位二进制数,123被解释成16位二进制数,高位填0,[678]这个单元存不下,只能存低位,高位存[679]单元。
- "MOV DWORD [678], 123":移动32位二进制数,123被解释成32位二进制数,高位填0,存不下像高位拓展存储。
寄存器
- AX,CX,DX,BX,SP,BP,SI,DI都是CPU的8个16位寄存器(各寄存器意义可参考P31),因此可以存储16位二进制数。它们不管使用哪个都可以进行同样的运算,只是如果用AX进行运算的话,程序可以变得简洁。例如:“ADD CX,0x1234”是一个4字节命令,而“ADD AX,0x1234”是一个3字节的命令。
- AX,CX等寄存器的X是extend的意思,因为原来CPU的寄存器都是8位的。用齐这8个寄存器,总共只可以存储16个字节。
- 当然,AX,CX,DX,BX分为AL,AH、CH,CL等。但是SP,BP,SI,DI没有这样分哦! 所以你想使用这4个寄存器分开高位和低位处理的时候,只能“MOV AX, SI”,使用AH、AL来取值。没办法,这又是英特尔规定的。
- 现在的CPU大多数都是32位的,因此在这些寄存器前面加上E就成为32位寄存器了,也是extend的意思哈。如:EAX,EBX.....。32位CPU也只能存储32个字节。
- 段寄存器:16位寄存器,明天讲解。
内存
就是因为CPU只能存储这么少信息,才需要内存的辅助。
转载于:https://www.cnblogs.com/comeonjiji/p/3568111.html
第2天:汇编语言与Makefile相关推荐
- 粗略阅读haribote OS 3
2016.09.04 -09.16 <haribote>-川合秀实 个人笔记. #1 haribote 09.04 功能.从头到尾开发一个能够显示任意多的窗口.实现鼠标光标控制.能够同时运 ...
- 既然选择了远方——30自制操作系统之第2天--汇编语言学习与Makefile入门
终于要开始学习新的东西了,进入2013年以来,一直准备着各种考试.虽然这两天也在学校待着准备美赛,但终是有时间看是第二天的学习了(亲啊,才第二天哎-).那就闲话不多说,开始吧: 汇编语言接触的不多,也 ...
- 汇编语言Makefile
最近又看起了李忠老师的汇编,每次敲命令编译实在是麻烦.写了一个Makefile,需要的拿走吧(Karl,拿走不谢). SRC=$(wildcard *.asm) OBJ=$(patsubst %.as ...
- makefile学习(转载)
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...
- Linux0.01内核根目录Makefile注释
# # Makefile for linux. # If you don't have '-mstring-insns' in your gcc (and nobody but me has :-) ...
- Makefile语法基础介绍
在Linux下,make是一个命令工具,是一个解释Makefile中指令的命令工具.make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样去编译和链接程序. make如何工作: ...
- 详解Makefile 函数的语法与使用
使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...
- 5、Makefile基础知识汇总(转自陈皓总述)
一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...
- linux makefile 编译标记 EXTRA_CFLAGS 简介
1.介绍 EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS 所有的EXTRA_变量只能使用在定义该变量后的makefile文件中. ...
最新文章
- char varchar nvarchar区别
- 看,2015阿里巴巴视觉设计人员面临的问题招收学校
- 布朗大学研究者提出面向下一代脑机接口系统
- Web Services简单介绍
- 【LeetCode】LeetCode之跳跃游戏——动态规划+贪心算法
- linux重定向输出命令
- Video视频背景设计企业模板
- Java的poi技术遍历Excel时进行空Cell,空row,判断
- N多校2018d4t7Maximum Mode
- 【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
- 【Windows C++笔记】winbase.h
- cad经典工作空间_最实用的CAD界面的设置
- Socket网络编程进阶与实战
- MySQL 归档数据的方法你知道了吗
- 如何用好消息推送为app拉新、留存、促活
- Java流程控制01-用户交互Scanner
- springcloud + nacos多环境联调、本地联调(即灰度版本)
- 智能制造案例分享系列之海尔互联工厂
- 【机器学习】贝叶斯学习
- 分享一个使用HTML+js制作爱心代码
热门文章
- 计算机硬件假故障,计算机硬件故障
- oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle
- mysql php pdo例_PHP的PDO操作实例
- 数据库设计基础:数据字典相关知识笔记
- 数据结构基础:线性表学习笔记
- mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
- 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试
- python数据结构-栈和队列的实现
- facebook 面试_如何为您的Facebook产品设计面试做准备
- 7个月,4000+人,500+源码笔记,诚邀你参加源码共读~