汇编语言指令

  • 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指令:
    1. ”MOV BYTE [678], 123“:移动8位二进制数到[678],[678]这个单元刚好能存下。
    2. "MOV WORD [678], 123":移动16位二进制数,123被解释成16位二进制数,高位填0,[678]这个单元存不下,只能存低位,高位存[679]单元。
    3. "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相关推荐

  1. 粗略阅读haribote OS 3

    2016.09.04 -09.16 <haribote>-川合秀实 个人笔记. #1 haribote 09.04 功能.从头到尾开发一个能够显示任意多的窗口.实现鼠标光标控制.能够同时运 ...

  2. 既然选择了远方——30自制操作系统之第2天--汇编语言学习与Makefile入门

    终于要开始学习新的东西了,进入2013年以来,一直准备着各种考试.虽然这两天也在学校待着准备美赛,但终是有时间看是第二天的学习了(亲啊,才第二天哎-).那就闲话不多说,开始吧: 汇编语言接触的不多,也 ...

  3. 汇编语言Makefile

    最近又看起了李忠老师的汇编,每次敲命令编译实在是麻烦.写了一个Makefile,需要的拿走吧(Karl,拿走不谢). SRC=$(wildcard *.asm) OBJ=$(patsubst %.as ...

  4. makefile学习(转载)

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...

  5. Linux0.01内核根目录Makefile注释

    # # Makefile for linux. # If you don't have '-mstring-insns' in your gcc (and nobody but me has :-) ...

  6. Makefile语法基础介绍

    在Linux下,make是一个命令工具,是一个解释Makefile中指令的命令工具.make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样去编译和链接程序. make如何工作: ...

  7. 详解Makefile 函数的语法与使用

    使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...

  8. 5、Makefile基础知识汇总(转自陈皓总述)

    一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...

  9. linux makefile 编译标记 EXTRA_CFLAGS 简介

    1.介绍 EXTRA_CFLAGS,  EXTRA_AFLAGS,  EXTRA_LDFLAGS,  EXTRA_ARFLAGS 所有的EXTRA_变量只能使用在定义该变量后的makefile文件中. ...

最新文章

  1. char varchar nvarchar区别
  2. 看,2015阿里巴巴视觉设计人员面临的问题招收学校
  3. 布朗大学研究者提出面向下一代脑机接口系统
  4. Web Services简单介绍
  5. 【LeetCode】LeetCode之跳跃游戏——动态规划+贪心算法
  6. linux重定向输出命令
  7. Video视频背景设计企业模板
  8. Java的poi技术遍历Excel时进行空Cell,空row,判断
  9. N多校2018d4t7Maximum Mode
  10. 【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
  11. 【Windows C++笔记】winbase.h
  12. cad经典工作空间_最实用的CAD界面的设置
  13. Socket网络编程进阶与实战
  14. MySQL 归档数据的方法你知道了吗
  15. 如何用好消息推送为app拉新、留存、促活
  16. Java流程控制01-用户交互Scanner
  17. springcloud + nacos多环境联调、本地联调(即灰度版本)
  18. 智能制造案例分享系列之海尔互联工厂
  19. 【机器学习】贝叶斯学习
  20. 分享一个使用HTML+js制作爱心代码

热门文章

  1. 计算机硬件假故障,计算机硬件故障
  2. oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle
  3. mysql php pdo例_PHP的PDO操作实例
  4. 数据库设计基础:数据字典相关知识笔记
  5. 数据结构基础:线性表学习笔记
  6. mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  7. 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试
  8. python数据结构-栈和队列的实现
  9. facebook 面试_如何为您的Facebook产品设计面试做准备
  10. 7个月,4000+人,500+源码笔记,诚邀你参加源码共读~