第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指令:
    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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之如何用cmd方法查看logcat

使用cmd命令查看logcat 使用adb logcat命令可查看android系统和应用的log adb logcat //显示全部日志 adb logcat > c:\test.log //将日志输出保存到文件test.log logcat日志中的优先级/tag标记: android输出的每一条日志都有一个标记和优先级与其关联。 优先级是下面的…

Typora 开始收费, 不妨试试这个开源免费的MD编辑器

相信大家很多人都已经知道了, 最好用最受欢迎的 markdown 编辑器 - Typora, 从 1.0.0 版本已经开始收费, 根据其官网的介绍, 收费方式为买断制, 也就是一次付费永久使用, 价格是14.99 刀, 另外支持支付宝付款, 89 元人民币, 最多支持3台设备使用, 对于我来说, 算上家里和公司的…

MySQL - Found option without preceding group in config file

1.1.1 现象 启动MYSQL超时,windows提示错误,在服务中MYSQL状态一直处于starting状态,执行MYSQL命令,出现如下错误信息: error:found option without preceding group in config file:E:\webserver\mysql5\my.ini at li…

31天重构学习笔记19. 提取工厂类

概念:本文中的“提取工厂类”是指如果要创建的对象很多,则代码会变的很复杂。一种很好的方法就是提取工厂类。 正文:一般来说我们需要在代码中设置一些对象,以便获得它们的状态,从而使用对象,所谓的设置通常…

linux+4.4+android,Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法

Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法跟Ubuntu 12.04 - 13.10 以及jellybean编译环境配置没多大区别, 顺便记录下而已:64位Ubuntu 11.10下Android开发环境的搭建(JDKEclipseADTAndroid SDK详细) http://www.linuxidc.com/Linux/2013-06/85303.htm一、配置依赖…

Android之定时器实现的几种方式和removeCallbacks失效问题详解

转载:http://blog.csdn.net/xiaanming/article/details/9011193 实现定时器有很多种方式,在这里我简单的介绍几种方式 实现定时器有很多种方式,在这里我简单的介绍几种方式 (1)使用Handler Runnable的方式 Handler handler new Handler(…

android中的ContentProvider实现数据共享

为了在应用程序之间交换数据,android中提供了ContentProvider,ContentProvider是不同应用程序之间进行数据交换的标准API。当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序可以通过提供contentProvider来实现,其他…

Blazor是春天还是寒风里的挣扎

title: Blazor是春天还是寒风里的挣扎 date: 2021-10-25 14:00:00 toc: true categories:- Blazor tags:- Blazor- MASA Blazor#官方解释BlazorBlazor允许您使用c#而不是JavaScript构建交互式web UI。Blazor应用由可重用的web UI组件组成,这些组件使用c#、HTML和CSS…

js个人笔记

2019独角兽企业重金招聘Python工程师标准>>> 看锋利的jquery第二版,,在前言的时候说建议使用最新版jquery,,然而在第二章结尾的地方有用到toggle()这个方法,,我自己用发现和书上的功能不同&…

第二天:装饰模式及面向对象设计原则4则

装饰模式是为已有功能动态地添加更多功能的一种方式.当系统需要新功能的时候,是向旧系统中添加新的代码.这些新加的代码通常装饰了原有类的核心职责或主要行为.这样的结果等同于在主类中加入新的字段,新的方法和新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满…

linux ntfs 速度慢,将U盘磁盘格式改成NTFS解决u盘复制速度慢问题

1、我们首先要看看U盘的文件系统是哪个?打开计算机-可移动磁盘-右击属性。2、目前打多数U盘采用的都是FAT32格式,这也是大多数USB2.0船速速度比较慢的原因。我们先用文件大小测试一个它的读写速度,格子这里用的是一个大概四百兆的文件,为了让…

触发器的创建、修改和删除

一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维…

Android之进程与线程的讲解

安卓平台中当首次启动运行一个组件的时候,Android会相应的启动了一个进程。默认的,所有的组件和程序运行在这个进程和线程中,也可以安排组件在其他的进程或者线程中运行。 进程:组件运行的进程由manifest file控制。组件的节点 —…

如何延迟一个 Task 的执行 ?

咨询区 Bruno Lopes我想实现一个可以在延迟 Xms 后执行一个 task 的需求,并要求能够实现在 xms 之前取消 task 的执行,我的参考代码如下:var _cancelationTokenSource new CancellationTokenSource();var token _cancelationTokenSource.To…

Xamarin.Android和UWP之MVVM的简单使用(二)

0x01 前言 前面一篇,Xamarin.Android和UWP之MVVM的简单使用(一),主要讲了MvvmLight的简单使用 这篇主要讲讲MvvmCross的简单使用,例子的话,还是和上篇的一样。直接进正题吧,不废话了。 0x02 简单的MVVM(mvvmcross) Dem…

ExtJs 带分页的comboBox

ExtJs 带分页的comboBox 如何得到当前第几页? 希望技术牛人能帮帮我,也可以加我扣扣【445958】, 交流JAVA Ext 框架等方面的技术!转载于:https://blog.51cto.com/ajiao13/1133773

C语言关系 是行还是列,C语言行优先和列优先的问题深入分析

C语言行优先和列优先的问题深入分析摘要本文主要探讨的是“行优先”原则和“列优先”原则的问题。1. 背景首先了解“行优先”和“列优先”的知识,这两种方式在数学上的直观描述如下,给定如下矩阵:根据行优先的原则,其排序方式为根…