CS萌新的汇编学习之路02 Learning of Assembly Language
第二节课 寄存器
1. 寄存器的定义: 进行信息储存的器件,是CPU中程序员可以读写的部件,通过改变各种寄存器中的内容来实现对CPU的控制
2. 寄存器的种类: 本节课学习通用寄存器和段寄存器
2.1 通用寄存器
8086CPU中,所有的寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器。
8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,AX,BX,CX,DX这四个寄存器都可以分为两个8位的小寄存器来用。8086CPU可以一次性处理字节和字,字节(byte)是8个bit组成;字(word)是由两个字节组成(高位字节和低位字节)
例如,AX分为AH和AL (高位和低位)AH为高8位,从00H到FFH,AL为低8位,从00H到FFH。两个按照AX=AH*100H+AL组合在一起。但是在对于AL、AH的单独运算中,产生进位是不予考虑的,比如单独对AL做加法,产生的进位不会加到AH里面,AH的进位也不予添加(超出AX范围了)。但是对于AX的计算考虑在AX范围内的进位,超出AX范围不考虑(直接舍去)。
2.2 物理地址和计算物理地址的方法
CPU访问内存单元,需要给出内存单元的地址,这个唯一的地址为物理地址。
8086CPU为16位结构的CPU机,意味着运算器一次性最多能处理16位的数据,寄存器的最大宽度为16,寄存器于运算器之间的通路为16位,但是8086CPU地址总线为20 位,达到1M的寻址能力,所以内部采用两个16位地址合成的方法来形成物理地址。
CPU中的相关部件提供段地址和偏移地址,段地址和偏移地址通过地址加法器进行 物理地址=段地址*10H+偏移地址 的合成方法产生物理地址,通过内部总线将20位物理地址送入输入输出控制电路,再将物理地址送入地址总线,被传送到储存器。
由于段地址是16进制的,故而只要左移一位加上偏移地址即可。
2.3 内存分段化和段寄存器
将内存分段操作,要找的物理地址在段中,以段起始地址/10H为段地址,由于16位地址的寻址能力为64KB,段的大小在64KB(10000H B)内。因此偏移地址为0~FFFFH之间
例如:有一个数据存放在内存20000H单元中,现在给定段地址为SA,若想用偏移地址选找到此单元,则SA应满足的条件为:最小为1001H,最大为2000H。 解析:由于偏移地址为0~FFFFH之间,故而最大值为(2000H*10H-0H)/10H=2000H;而最小值为(2000H*10H-FFFFH)/10H,但是由于2000H*10H-FFFFH=10001H不为10H的整数倍,所以取进一位的10010H,故而最小值为 10010H/10H=1001H
段寄存器就是存放段地址的寄存器,8086包括4个:CS,DS,SS,ES
CS和IP寄存器:CS为代码段寄存器,IP为指令指针寄存器。 8086CPU从以 CS*10H+IP 为地址的内存单元开始当作指令执行(即把CS:IP的指向的内容当作指令)。每次读取一个指令,IP自动加上指令的字数(代码段的长度)作为读取下一个指令的首地址。
可以修改CS,IP的指令,例如:
jmp 2AE3:3 执行后,CS=2AE3H,IP=0003H
jmp ax 执行后,IP会替换成ax储存的内容
注意!8086CPU加电启动或者复位后(即CPU刚开始工作时),CS和IP被设置为(FFFFH:0000H)所以,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。而且,CPU把CS:IP指向的内存单元内容看作指令。如果内存中的一段信息被CPU执行过的话,它所在的内存单元必定被CS:IP指向过。任意时刻,8086CPU将CS:IP指向的内容当作指令执行。
几个简单的汇编指令:
mov ax,4e20h 把4e20h加到ax中
sub ax,4e20h 把ax中的数据减去4e20h
mov ax,bx 把ax中的数减去bx中的数,并且储存在ax中
CS萌新的汇编学习之路02 Learning of Assembly Language的更多相关文章
- CS萌新的汇编学习之路(其实是老师作业呵呵哒)Learning of Assembly Language
第一节课学习汇编语言,做笔记,做笔记 1.概念 首先是汇编语言这门课程的定义以及对于学习高级语言.深入理解计算机系统的作用 软硬件接口机器语言 汇编语言 高级语言 关系 机器语言和汇编语言可移植性差 ...
- 大数据萌新的Python学习之路(一)
笔记开始简介 从2018年9月份正式进入大学的时代,大数据和人工智能的崛起让我选择了计算机专业学习数据科学与大数据技术专业,接触的第一门语言就是C语言,后来因为同学推荐的原因进入了学校的人工智能研究协 ...
- 大数据萌新的Python学习之路(三)
笔记内容: 一.集合及其运算 在之列表中我们可以存储数据,并且对数据进行各种各样的操作.但是如果我们想要对数据进行去重时是十分麻烦的,需要使用循环,要建立新的列表,还要 进行对比,十分的麻烦,还消耗 ...
- 大数据萌新的Python学习之路(二)
笔记内容: 一.模块 Python越来越被广大程序员使用,越来越火爆的原因是因为Python有非常丰富和强大标准库和第三方库,几乎可以实现你所想要实现的任何功能,并且都有相应的Python库支持,比如 ...
- Spring Boot的学习之路(02):和你一起阅读Spring Boot官网
官网是我们学习的第一手资料,我们不能忽视它.却往往因为是英文版的,我们选择了逃避它,打开了又关闭. 我们平常开发学习中,很少去官网上看.也许学完以后,我们连官网长什么样子,都不是很清楚.所以,我们在开 ...
- ReactNative新手学习之路02第一个RN项目
开始第一个RN项目(iOS版)我的电影列表0.1版,后面做列表版 打开上一节项目 index.ios.js,android打开index.android.js.我这里使用的是Atom编辑器,你也可以使 ...
- Quartz.Net 学习之路02 初探Quartz.Net
第二讲:简单的实例,看看Quartz.Net强在哪里? 直接上代码,代码里有注释: using System; using Quartz; using Quartz.Impl; namespace L ...
- python学习之路02
1.python的数据类型有:Number String List Truple Sets Dictionary . 数字类型:int float bool complex 2.不可变数据:数字 字符 ...
- Django学习之路02
静态文件配置 html文件默认全都放在templates文件夹下 对于前段已经写好了的文件, 我们只是拿过来使用 那么这些文件都可以称之为叫"静态文件"静态文件可以是 bootst ...
随机推荐
- EFCore Owned Entity Types,彩蛋乎?鸡肋乎?之鸡肋篇
鸡肋 鸡肋(Chicken ribs),现代汉语词语,出自<三国志·魏书·武帝纪>裴松之注引<九州春秋>曰:"夫鸡肋,弃之如可惜,食之无所得,以比汉中,知王欲还也.& ...
- OO第十二次作业
规格设计的发展历史 随着计算机软硬件的发展,代码的复杂程度也在不短增加,随着计算机软件规模日渐庞大,结构化程序设计方法开始无法满足用户的需求,面向对象程序设计产生.面向对象程序设计是一场重大的革命,提 ...
- spring security 学习
1.默认登录 user /df1fc617-bb94-494e-8adb-0234046bf092 取消校验 在启动类上添加下面的注解 @EnableAutoConfiguration(excl ...
- web项目中web.xml简介
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...
- call Apply bind详解
call方法: 语法:call(thisObj,'',''........) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 说明:call方法可以用来代替另一个对象调用一个方法.call方法 ...
- web前端技术学习
$.ajax() ajax数据请求方式,交互,跨域等相关问题 一.请求方式 1.$.ajax() $.ajax({ type:"get",//请求方式“get”和“post” ur ...
- Ubuntu 修改sudoers之后无法用sudo怎么恢复
进入终端 键入 pkexec visudo 修改sudoer.temp 实例如下 ## This file MUST be edited with the 'visudo' command as ro ...
- 今天想写一下关于SpringMVC的视图解释器
昨天我写了一下SpringMVC最爱金丹的项目的配置流程,这样搭建完项目之后呢我发现我每个请求都得加个.do什么的后缀,这让我开发得很不爽,于是呢今天就想配置一下这个试图解释器,这样做的目的有两个:第 ...
- python学习笔记 18-4-11
一.执行一个简单的代码 1.先创建目录 mkdir /home/dev 2.切换到目录 cd /home/dev 3.在目录下创建文件夹 vim hello.py 4.编辑文件内容 vim hello ...
- CodeBlocks无法调试的解决方法
闲话: 万万没想到我也会写这个东西.一开始软件工程课的时候老师要求我们写博客园,一直都是被动地在写博客.刚刚在重温C语言的时候发现的各种各样问题觉得还是写下来比较好,一旦以后自己又忘了呢……(摊手 顺 ...