第2章 寄存器(CPU工作原理)
2.1 通用寄存器
8086CPU的所有寄存器都是16位,可以存放两个字节。AX、BX、CX、DX四个寄存器通常用来存放一般性的数据,被称为通用寄存器。
一个16位寄存器可以存储一个16位的数据。
那么一个16位寄存器所能存储的数据的最大值为多少呢?
8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX四个寄存器都可分为两个可独立使用的8位寄存器来使用:
AX可分为AH和AL;
BX可分为BH和BL;
CX可分为CH和CL;
DX可分为DH和DL;
2.3 汇编指令
汇编指令举例:
mov ax,18 将18送入寄存器AX AX=18
mov ah,78 将78送入积存器AH AH=78
add ax,8 将寄存器AX中的数值加上8 AX=AX+8
mov ax,bx 将寄存器BX中的数据送入寄存器AX AX=BX
add ax,bx 将AX和BX中的数值相加,结果存在AX中 AX=AX+BX
在写一条汇编指令或一个寄存器的名称时不区分大小写,如:mov ax,18和MOV AX,18的含义相同;bx和BX的含义相同。
注意:如果单独把AH和AL做为两个独立的8位寄存器来用,那么它们两个就是两个不相关的寄存器,不要错误的认为,诸如add al,93H的指令产生的进位会存储在ah中,add al,93H进行的是8位运算。
如果执行add ax,93H,低8位的进位会存储在ah中,CPU在执行这条指令时认为只有一个16位寄存器ax,进行的16位运算。指令add ax,93H执行后,ax中的值为:0158H。此时,使用的寄存器是16位寄存器ax,add ax,93H相当于将ax中的16位数据00c5H和另一个16位数据009CH相加,结果是16位的0158H。
在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如:
mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,20000
等都是正确的指令,而
mov ax,bl (在8位寄存器和16位寄存器之间传送数据)
mov bh,ax (在16位寄存器和8位寄存器之间传送数据)
mov al,20000 (8位寄存器最大可存放值为255的数据)
add al,100H (将一个高于8位的数据加到一个8位寄存器中)
等都是错误的指令,错误的原因都是指令的两个操作对象的位数不一致。
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=F000H,IP=FFFFH,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFFOH单元中的指令是8086PC机开机后执行的第一条指令。
现在,我们更清楚了CS和IP的重要性,它们的内容提供了CPU要执行指令的地址。
mov指令不能用于设置CS、IP的值,原因很简单,因为8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来改变它们的值。能够改变CS、IP的内容的指令被统称为转移指令。
我们现在介绍一个最简单的可以修改CS、IP的指令:jmp指令。
若想同时修改CS、IP的内容,可用指令“jmp 段地址: 偏移地址”完成,如:
jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
jmp 3:0B16,执行后:CS=0003H,IP=0B16H,CPU将从00B46H处读取指令。
若想仅修改IP的内容,可用指令“jmp 某一合法寄存器”完成,如:
jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H
指令执行后:ax=1000H,CS=2000H,IP=1000H
指令“jmp 某一合法寄存器”的功能为:用寄存器中的值修改IP。
jmp ax,在含义上类似于mov IP,ax这样的指令。
CPU只认被CS:IP指向的内存单元中的内容为指令,所以,要让CPU执行我们放在代码段中的指令,必须要将CS:IP指向所定义的代码段中的第一条指令的首地址。
对于上面的例子,我们将一段代码存放在123BOH-123BAH内存单元中,将其定义为代码段,如果要让这段代码得到执行,可设CS=123BH,IP=0000H。
段地址在8086CPU的段寄存器中存放。当8086CPU要访问地址时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。
CS存放指令的段地址,IP存放指令的偏移地址。
8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
8086CPU的工作过程:
1:从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
2:IP指向下一条指令;
3:执行指令。(转到步骤1,重复这个过程。)
查看CPU和内存,用机器指令和汇编指令编程
1:预备知识:Debug的使用
(1)什么是Debug?
Debug是DOS,Windows都提供的实模式(8086方式)程序的调试工具,使用它,可以查看 CPU各种寄存器中的内容、内存的情况和在机器码级别跟踪程序的运行。
(2)我们用到的Debug功能
用Debug的R命令查看、改变CPU寄存器的内容;
用Debug的D命令查看内存中的内容;
用Debug的E命令改写内存中的内容;
用Debug的U命令将内容中的机器指令翻译成汇编指令;
用Debug的T命令执行一条机器指令;
用Debug的A命令以汇编指令的格式在内存中写入一条机器指令;
(3)进入Debug
Debug是在DOS方式下使用的程序。我们进入Debug前,应先进入到DOS方式,用以下方式可 以进入DOS:
1:重新启动计算机,进入DOS方式,此时进入的是实模式的DOS;
2:在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS;
下面说明在Windos2000中进入Debug的一种方法,在Windows98中进入的方法与此类似。
开始-运行-输入command
进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变成全屏方式,然后 运行Debug程序。
具体使用方法看P46。
分享到:
相关推荐
汇编语言笔记1-《汇编语言》王爽
【汇编语言第三版-王爽 学习笔记】 汇编语言是计算机科学的基础,它是一种低级编程语言,直接对应于计算机硬件的指令集。本笔记主要涵盖8086汇编语言,由王爽教授编著的《汇编语言》第三版中的核心概念。 1. **CPU...
"最强大的王爽汇编语言学习环境"是一个专为学习这门课程设计的资源包,它包含了一系列辅助学习的工具和资料,旨在提供一个全面、高效的实践平台。 首先,汇编语言是计算机科学中的低级编程语言,它与机器语言密切...
笔记_汇编语言(第二版王爽)
汇编语言笔记(王爽) 本文档是对汇编语言的详细笔记,基于王爽主编的《汇编语言(第三版)》一书。笔记涵盖了汇编语言的基础知识、寄存器、存储器、指令系统、地址总线、数据总线、控制总线、内存地址空间等多方面...
《汇编语言》是王爽教授的一本经典教材,它深入浅出地介绍了汇编语言的基础知识和原理。学习汇编语言,可以帮助我们理解计算机底层的工作机制,掌握指令集的运用,以及如何直接与硬件进行交互。以下是根据书中的内容...
### 汇编语言-王爽版的个人学习总结 #### 一、典型的汇编编写规范 本章节主要介绍汇编语言中常见的编写规范,包括段声明、段定义以及代码组织方式等内容。 **1.1 文字说明** 汇编语言程序通常由多个段组成,这些...
【笔记总结】汇编语言--王爽-附件资源
课件(王爽)可能包含作者制作的PPT、笔记或其他教学材料,这些资源通常会以更直观的方式展示知识点,帮助读者更有效地学习和理解汇编语言。 总之,通过学习王爽的《汇编语言》,读者不仅可以掌握汇编语言的基本...
### 汇编语言知识点详解——基于王爽教程 #### 一、基础知识 **1. 汇编指令与机器指令** - **定义**: 汇编指令是机器指令的助记符,与机器指令一一对应。每个处理器都有特定的汇编指令集。 **2. 指令类型** - *...
除此之外还包含学习笔记(PDF版和GoodNotes5版),DOSBox0.74-3入门教程以及汇编环境搭建教程,功能强大的文本编辑器UE(支持官网更新),教材用到的所有文件以及汇编常用文件,例如masm5.0/debug.exe/link.exe/tc2.0....
虽然《王爽汇编语言答案》主要关注的是汇编语言,但了解HTML基础知识可以帮助你更好地组织和呈现学习资料,例如创建个人学习笔记或教程。 总的来说,通过《王爽汇编语言答案》和CHM格式的解答文件,学习者可以得到...
《王爽的汇编原理》是一本广受欢迎的汇编语言教程,因其深入浅出的讲解方式而备受赞誉。这本书适合初学者入门,也适合有一定基础的程序员深化对计算机底层运作的理解。王爽教授以其独特的教学风格,将复杂的汇编语言...
### 80x86汇编语言基础知识点详解 #### 汇编语言概览 - **定义**:汇编语言是一种低级编程语言,专为特定类型的处理器设计,例如80x86系列。它使用助记符来代替机器语言指令,使得编写和阅读程序更为直观。 - **...
王爽-学习笔记》是一份针对初学者的汇编语言学习资料。这份笔记旨在帮助读者理解汇编语言的基础概念和技术要点,并通过实际的例子加深对汇编语言的理解。尽管这份笔记并不是非常全面,但对于那些想要入门汇编语言的...
汇编语言是一种低级编程语言,它直接对应于计算机的机器语言,但使用了人类可读的助记符和符号来替代机器语言中的二进制指令和地址。以下是关于汇编语言的详细说明: ### 基本概念与特性 1. **机器相关性**: - *...
王爽《汇编语言》第二版习题答案 教材:《汇编语言》(2008年4月第2版),王爽著,清华大学出版社。 长期以来,汇编语言被认为是一门枯燥难学的课程,但王爽老师的著作《汇编语言》解决了这个问题。 本人仅将...
它提供了全面的学习笔记,包括课后实验和检测点的答案,旨在辅助读者深入理解汇编语言的概念和操作。 项目内容涵盖了汇编语言的基础知识,如寄存器、指令集、数据表示等,并逐步过渡到更复杂的主题,如程序控制、子...
这份学习笔记主要依据王爽老师的教程进行整理,将涵盖汇编语言的基础概念、指令集、寄存器以及内存管理等内容。 #### 汇编语言的特点 汇编语言具有以下特点: - **与硬件紧密相关**:不同的处理器架构可能拥有不同...