搜档网
当前位置:搜档网 › 汇编语言基础知识

汇编语言基础知识

汇编语言基础知识
汇编语言基础知识

汇编语言基础知识

汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有

效地应用汇编语言对其编程,因此,本章对硬件系统结构的问题进行部分探讨,首先介绍了计算机的基本结构、Intel 公司微处理器的发展、计算机的语言以及汇编语言的特点,在此基础上重点介绍寄存器、内存组织等汇编语言所涉及到的基本知识。

1.1 微型计算机概述

微型计算机由中央处理器(Central Processing Unit ,CPU )、存储器、输入输出接口电路和总线构成。CPU 如同微型计算机的心脏,它的性能决定了整个微型计算机的各项关键指标。存储器包括随机存储器(Random Access Memory ,RAM )和只读存储器(Read Only Memory ,ROM )。输入输出接口电路用来连接外部设备和微型计算机。总线为CPU 和其他部件之间提供数据、地址和控制信息的传输通道。如图1.1所示为微型计算机的基本结构。

外部设备存储器输入输出接口电路中央处理器

CPU

地址总线

数据总线

控制总线

图1.1 微型计算机基本结构

特别要提到的是微型计算机的总线结构,它使系统中各功能部件之间的相互关系变

为各个部件面向总线的单一关系。一个部件只要符合总线结构标准,

就可以连接到采用这种总线结构的系统中,使系统功能得到扩展。

数据总线用来在CPU 与内存或其他部件之间进行数据传送。它是双向的,数据总线

的位宽决定了CPU 和外界的数据传送速度,8位数据总线一次可传送一个8位二进制数据(即一个字节),16位数据总线一次可传送两个字节。在微型计算机中,数据的含义是广义的,数据总线上传送的不一定是真正的数据,而可能是指令代码、状态量或控制量。

地址总线专门用来传送地址信息,它是单向的,地址总线的位数决定了

CPU 可以直接寻址的内存范围。如

CPU 的地址总线的宽度为N ,则CPU 最多可以寻找2N 个内存单

元。

控制总线用来传输控制信号,其中包括CPU送往存储器和输入输出接口电路的控制

信号,如读信号、写信号和中断响应信号等;也包括其他部件送到CPU的信号,如时钟信号、中断请求信号和准备就绪信号等。

1.2 Intel公司微处理器简介

自20世纪70年代开始出现微型计算机以来,CPU经历了飞速的发展。1971年,Intel 设计成功了第一片4位微处理器Intel 4004;随之又设计生产了8位微处理器8008;1973年推出了8080;1974年基于8080的个人计算机(Personal Computer,PC)问世,Microsoft公司的创始人Bill Gates为PC开发了BASIC语言解释程序;1977年Intel 推出了8085。自此之后,Intel又陆续推出了8086、80386、Pentium等80x86系列微处理器。各种微处理器的主要区别在于处理速度、寄存器位数、数据总线宽度和地址总

线宽度。下面简要介绍不同时期Intel公司制造的几种主要型号的微处理器,这些微处理器都曾经或正在广为流行。

1.80x86系列微处理器

1)8088微处理器

具有多个16位的寄存器、8位数据总线和20位地址总线,可以寻址1MB的内存。虽然这些寄存器一次可以处理2个字节,但数据总线一次只能传送1个字节。该处理器只能工作在实模式。

2)8086微处理器

指令系统与8088完全相同,具有多个16位的寄存器、16位数据总线和20位地址总线,可以寻址1MB的内存,一次可以传送2个字节。该处理器只能工作在实模式。

3)80286微处理器

比8086运行更快,具有多个16位的寄存器、16位数据总线和24位地址总线,可以寻址16MB内存。它既可以工作在实模式,也可以工作在保护模式。

4)80386微处理器

具有多个32位的寄存器、32位数据总线和32位地址总线,可以寻址4GB内存。它提供了较高的时钟速度,增加了存储器管理和相应的硬件电路,减少了软件开销,提高

了效率。它既可以工作在实模式,也可以工作在保护模式。

5)80486微处理器

具有多个32位的寄存器、32位数据总线和32位地址总线。它比80386增加了数字协处理器和8KB的高速缓存,提高了处理速度。它既可以工作在实模式,也可以工作在

保护模式。

6)Pentium(奔腾)

具有多个32位的寄存器、64位数据总线和36位地址总线。因为它采用了超标量体

系结构,所以每个时钟周期允许同时执行两条指令,处理速度得到了进一步提高,性能

比80486优越得多。它既可以工作在实模式,也可以工作在保护模式。

以上介绍了Intel80x86系列的一些主要微处理器,表 1.1给出了该系列部分微处理器的数据总线和地址总线宽度。实际上80x86系列的功能还在不断改进和增强,它们的速度将会更快,性能将会更优越。但无论怎样变化,它们总会被设计成是完全向下兼

容的,就像在8086上设计和运行的软件可以不加任何改变地在Pentium 4机上运行一样。对于汇编语言编程人员来讲,掌握16位计算机的编程十分重要,它是学习高档计

算机及保护模式编程的基础,也是掌握实模式程序设计的唯一方法。

2.CPU的主要性能指标

1)机器字长

机器字长和CPU内部寄存器、运算器、内部数据总线的位宽相一致。如8086CPU,它的内部寄存器是16位的、运算器能完成两个16位二进制数的并行运算、数据总线的位宽为16位,则它的机器字长为16位,也称其为16位计算机。通常,机器字长越长,计算机的运算能力越强,其运算精度也越高。

2)速度

CPU的速度是指单位时间内能够执行指令的条数。速度的计算单位不一,若以单字

长定点指令的平均执行时间计算,用每秒百万条指令(Million Istructions Per Second,MIPS)作为单位;若以单字长浮点指令的平均执行时间计算,则用每秒百万条

浮点运算指令(Million Floating-point Operations Per Second,MFLOPS)表示。现在,采用计算机中各种指令的平均执行时间和相应的指令运行权重的加权平均法求出等

效速度作为计算机运算速度。

3)主频

主频又称为主时钟频率,是指CPU在单位时间内产生的时钟脉冲数,以MHz/s(兆赫兹每秒)为单位。由于计算机中的一切操作都是在时钟控制下完成的,因此,对于机

器结构相同或相近的计算机,CPU的时钟频率越高,运算速度越快。

表1.1Inte l80x86系列微处理器总线宽度

CPU 数据总线宽度地址总线宽度CPU 数据总线宽

度地址总线宽度

8086 16 20 Pentium 64 36 8088 8 20 Pentium Ⅱ64 36 80286 16 24 Pentium Ⅲ64 36 80386SX 16 24 Pentium 4 64 36 80386DX 32 32 Itanium 64 44 80486 32 32

1.3 计算机语言及汇编语言特点

1.3.1 计算机语言概述

计算机语言的发展经历了由机器语言、汇编语言到高级语言这样一个由低级到高级

的发展过程。

1.机器语言

机器语言是计算机唯一能直接识别和执行的计算机语言。由于计算机硬件本身只能

识别二进制代码,在计算机发展的初期,人们使用二进制代码构成机器指令来编写程序,

这种二进制编码的计算机语言就是机器语言。机器语言描述的程序称为目标程序,只有目标程序才能被CPU直接执行。指令用于指出计算机所进行的操作和操作对象的代码,

一条指令通常由操作码和操作数两部分组成。其中,操作码指出计算机所进行的具体操作,如加法、减法等;操作数说明操作的对象。操作码比较简单,只需对每一种操作指

定确定的二进制代码就可以了;操作数比较复杂,首先它可以有一个、两个或三个,分

别称为单操作数、双操作数或三操作数,其次,操作数可能存放在不同的地方,既可以

存放在寄存器中,也可以存放在存储器中,甚至直接存放在指令中,通常要用寻址方式

来说明。

一台计算机全部指令的集合构成该计算机的指令系统。指令系统是计算机基本功能

的体现,不同的机器指令对应的二进制代码序列各不相同。机器语言是面向机器的,不

同机器之间的语言是不通用的,这也是机器语言是“低级”语言的含义所在。用二进制

代码编写程序相当麻烦,写出的程序也难以阅读和调试。

2.汇编语言

早期的程序员们很快就发现了使用机器语言带来的麻烦,它是如此难于辨别和记

忆,给整个产业的发展带来了障碍,于是产生了汇编语言。汇编语言是一种采用指令助

记符、符号地址、标号等符号书写程序的语言,它便于人们书写、阅读和检查。汇编语

言指令与计算机指令基本上是一一对应的,汇编语言与计算机有着密不可分的关系,处理器不同,汇编语言就不同,因此它是一种低级语言,同时它也是唯一能够充分利用计

算机硬件特性并直接控制硬件设备的语言。利用汇编语言进行程序设计体现了计算机硬

件和软件的结合。

用汇编语言编写的程序称为汇编源程序(或称汇编语言程序),计算机不能直接识别,必须将其翻译成由计算机指令组成的程序后,CPU才能执行,这一过程称为“汇编”。用于将汇编源程序翻译成计算机语言的程序称为汇编程序,这种由源程序经过计算机翻

译转换成的计算机语言程序也称为目标程序。目标程序还不能直接交给CPU执行,它还需要通过连接程序装配成可执行程序才能被执行。连接程序具有将多个目标程序装配在

一起的功能,它也可以将目标程序与预先编写好的一些放在子程序库中的子程序连接在

一起,构成较大的可执行程序。它们之间的关系如图 1.2所示。

图1.2 汇编程序与目标程序、可执行程序之间的关系

3.高级语言

高级语言是一种与具体的计算机硬件无关,独立于计算机类型的通用语言,比较接

近人类自然语言的语法,用高级语言编程不必了解和熟悉计算机的指令系统,更容易掌握和使用。高级语言采用接近自然语言的词汇,其程序的通用性强,易学易用,这些语

言面向求解问题的过程,不依赖具体计算机。高级语言也要翻译成机器语言才能在计算

机上执行。其翻译有两种方式,一种是把高级语言程序翻译成机器语言程序,然后经过

连接程序连接成可执行文件,再在计算机上执行,这种翻译方式称为编译方式,大多数

高级语言如PASCAL语言、C语言等都是采用这种方式;另一种是直接把高级语言程序

在计算机上运行,一边解释一边执行,这种翻译方式称为解释方式,如BASIC语言就采用这种方式。

高级语言源程序是在未考虑计算机结构特点情况下编写的,经过翻译后的目标程序

往往不够精练,过于冗长,加大了目标程序的长度,占用较大存储空间,执行时间较长。

1.3.2 汇编语言的特点

汇编语言使用助记符和符号地址,所以它要比机器语言易于掌握,与高级语言相比

较,汇编语言有以下特点。

1)汇编语言与计算机关系密切

汇编语言中的指令是机器指令的符号表示,与机器指令是一一对应的,因此它与计

算机有着密切的关系,不同类型的CPU有不同的汇编语言,也就有各种不同的汇编程序。汇编语言源程序与高级语言源程序相比,其通用性和可移植性要差得多。

2)汇编语言程序效率高

由于构成汇编语言主体的指令是用机器指令的符号表示的,每一条指令都对应一条

机器指令,且汇编语言程序能直接利用计算机硬件系统的许多特性,如它允许程序员利用寄存器、标志位等编程。用汇编语言编写的源程序在编译后得到的目标程序效率高,

主要体现在空间效率和时间效率上,即目标程序短、运行速度快这两个方面,在采用相

同算法的前提下,任何高级语言程序在这两个方面的效率与汇编语言相比都望尘莫及。

3)特殊的使用场合

汇编语言可以实现高级语言难以胜任甚至不能完成的任务。汇编语言具有直接和简

捷的特点,用它编制程序能精确地描述算法,充分发挥计算机硬件的功能。在过程控制、多媒体接口、设备通信、内存管理、硬件控制等方面的程序设计中,用汇编语言直接方

便,执行速度快,效率高。

汇编语言提供了一些模块间相互连接的方法,一个大的任务可以分解成若干模块,

将其中执行频率高的模块用汇编语言编写,可以大大提高大型软件的性能。

1.4 程序可见寄存器组

80386(含80386)以上型号的CPU能够处理32位数据,其寄存器长度是32位的,但为了与早期的8086等16位机CPU保持良好的兼容性,80386以上型号的CPU中程序可见寄存器组包括多个8位、16位和32位寄存器,如图 1.3所示。

1.通用寄存器

8086~80286 CPU各有8个16位通用寄存器AX、BX、CX、DX、SP、BP、SI、DI。对于4个16位数据寄存器AX、BX、CX、DX,其每个又可以作为2个独立的8位寄存器使用,它们被分别命名为AH、AL、BH、BL、CH、CL、DH、DL。80386以上型号的CPU各有8个32位通用寄存器,它们是相应16位寄存器的扩展,被分别命名为EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI。在程序中每个8位、16位、32位寄存器都可以独立使用。

图1.3 8086~Pentium CPU程序可见寄存器组

SP、ESP 叫做堆栈指针寄存器,其中存放当前堆栈段栈顶的偏移量,它们总是与SS 堆栈段寄存器配合存取堆栈中的数据。在实模式方式下使用SP,在80386以上的保护模式下使用ESP。

除SP、ESP堆栈指针不能随意修改、需要慎用外,其他通用寄存器都可以直接在指

令中使用,用以存放操作数,这是它们的通用之处。在后边讨论指令系统时,可以看到

某些通用寄存器在具体的指令中还有其他用途,例如EAX、AX、AL(通常分别被称为32位、16位、8位累加器),它们在乘除法、十进制运算、输入输出指令中有专门用途。

另外有些通用寄存器也可以存放地址用以间接寻址内存单元,例如在实模式中BX、BP、SI、DI可以作为间接寻址的寄存器,用以寻址64KB以内的内存单元。在保护模式中EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI可以作为间接寻址的寄存器,用以寻址4GB以内的内存单元,详细内容见 3.1节和6.3节。

2.段寄存器

在IBM PC机中存储器采用分段管理的方法,因此一个物理地址需要用段基地址和

偏移量表示。一个程序可以由多个段组成,但对于8086~80286 CPU,由于只有4个段寄存器,所以在某一时刻正在运行的程序只可以访问4个当前段,而对于80386及其以上的计算机,由于有6个段寄存器,则可以访问6个当前段。在实模式下段寄存器存放

当前正在运行程序的段基地址的高16位,在保护模式下存放当前正在运行程序的段选

择子,段选择子用以选择描述符表中的一个描述符,描述符描述段的基地址、长度和访

问权限等,显然在保护模式下段寄存器仍然是选择一个内存段,只是不像实模式那样直接存放段基址罢了。

代码段寄存器CS指定当前代码段,代码段中存放当前正在运行的程序段。堆栈段

寄存器SS指定当前堆栈段,堆栈段是在内存开辟的一块特殊区域,其中的数据访问按

照后进先出(Last in First out,LIFO)的原则进行,允许插入和删除的一端叫做栈顶。IBM P C机中SP(或ESP)指向栈顶,SS指向堆栈段基地址。数据段寄存器DS指定当前运行程序所使用的数据段。附加数据段寄存器ES指定当前运行程序所使用的附加

数据段。段寄存器FS和GS只对80386以上CPU有效,它们没有对应的中文名称,用于

指定当前运行程序的另外两个存放数据的存储段。虽然DS、ES、FS、GS(甚至于CS、SS)所指定的段中都可以存放数据,但DS是主数据段寄存器,在默认情况下使用DS所指向段的数据。若要引用其他段中的数据,需要显式地说明。

3.控制寄存器

控制寄存器包括指令指针寄存器和标志寄存器。在程序中不能直接引用控制寄存

器名。

1)IP、EIP

IP、EIP叫做指令指针寄存器,它总是与CS段寄存器配合指出下一条要执行指令的

地址,其中存放偏移量部分。在实模式方式下使用IP,在80386以上的保护模式下使用EIP。

2)标志寄存器(FLAGS)

标志寄存器也被称为状态寄存器,由运算结果特征标志和控制标志组成。8086~80286 CPU为16位,80386以上为32位。如图 1.4所示,可以看出它们完全向下兼容。空白位为将来保留,暂未定义。

图1.4 标志寄存器

(1)运算结果特征标志:用于记录程序中运行结果的特征,8086~Pentium CPU的标志寄存器均含有这6位标志。

CF(Carry Flag):进位标志,记录运算结果的最高位向前产生的进位或借位。若

有进位或借位则置CF=1,否则清零。可用于检测无符号数二进制加减法运算时是否发

生溢出(溢出时CF=1)。

PF(Parity Flag):奇偶标志,记录运算结果中含1的个数。若个数为偶数则置PF=1,否则清零。可用于检测数据传送过程中是否发生错误。

AF(Auxiliary carry Flag):辅助进位标志,记录运算结果最低4位(低半字节)向前产生的进位或借位。若有进位或借位则置AF=1,否则清零。只有在执行十进制运

算指令时才关心此位。

ZF(Zero Flag):零标志,记录运算结果是否为零,若结果为零则置1,否则清零。

SF(Sign Flag):符号标志,记录运算结果的符号,若结果为负则置1,否则清零。

OF(Overflow Flag):溢出标志,记录运算结果是否超出了操作数所能表示的范围。

若超出则置1,否则清零。可用于检测带符号数运算时是否发生溢出。

(2)控制标志:控制标志控制处理器的操作,要通过专门的指令才能使控制标志发

生变化。

①以下控制标志对8086~Pentium CPU均有效。

IF(Interrupt Flag):中断允许标志,当IF=1时允许CPU响应外部可屏蔽中断请

求(INTR);当IF=0时禁止响应INTR。IF的控制只对INTR起作用。

DF(Direction Flag):方向标志,专门服务于字符串操作指令。当DF=1时,表示串操作指令中操作数地址为自动减量,这样使得对字符串的处理是从高地址向低地址方

向进行;当DF=0时,表示串操作指令中操作数地址为自动增量。

TF(Trap Flag):陷阱标志,用于程序调试。当TF=1时,CPU处于单步方式;TF=0时,CPU处于连续方式。状态标志位的符号表示见表 1.2。

表1.2状态标志位的符号表示

标志位标志为1标志为0

CF进位(有/否)CY NC

PF奇偶(偶/奇)PE PO

AF半进位AC NA

ZF全零(是/否)ZR NZ

SF符号(负/正)NG PL

IF中断(允许/禁止)EI DI

DF方向(增量/减量)DN UP

OF溢出(是/否)OV NV

②以下控制标志只对80286以上CPU有效。

IOPL(I/O Privilege Level):特权标志,占D13和D12两位。当在保护模式下工作时,IOPL指定要求执行I/O指令的特权级。若当前任务的特权级比IOPL高(级数越小特权级越高,OO级是最高级),则执行I/O指令;否则会检查该任务的I/O许可位图,若位图中的值为1则发生一个保护异常,导致执行程序被挂起。

NT(Nested Task):嵌套任务标志,用于保护模式操作,在执行中断返回指令IRET 时要测试NT值。当NT=1时,表示当前执行的任务嵌套于另一任务之中,执行完该任务

后要返回到另一任务,IRET指令的执行是通过任务切换实现的。当NT=0时,用堆栈中保存的值恢复标志寄存器、代码段寄存器和指令指针寄存器的内容,以执行常规的IRET 中断返回操作。

③以下控制标志只对80386以上CPU有效。

RF(Resume Flag):重启动标志,该标志控制是否接受调试故障,它与调试寄存器

一起使用。当RF=0时接受,RF=1时忽略。

VM(Virtual 8086 Model):虚拟方式标志,当CPU处于保护模式时,若VM=1则切换到虚拟方式,以允许执行多个DOS程序,否则CPU工作在实模式或保护模式。

④以下控制标志只对80486 SX以上 CPU有效。

AC(Alignment Check):地址对齐检查标志,若AC=1时进行地址对齐检查,当出现地址不对齐时会引起地址对齐异常,只有在特权级3运行的应用程序才检查引起地址对齐故障。若AC=0时不进行地址对齐检查。只有80486 SX微处理器使用该位,主要用

来同它配套的协处理器80487 SX同步工作。所谓地址不对齐是指以下情形:1个字从奇地址开始,或1个双字不是从4的倍数的地址开始。

⑤以下控制标志只对Pentium以上CPU有效。

ID(Identification):标识标志,若ID=1,则表示Pentium支持CPUID指令,CPUID 指令给系统提供Pentium微处理器有关版本号及制造商等信息。

VIP(Virtual Interrupt Pending):虚拟中断挂起标志,与VIF配合,用于多任务环境下,给操作系统提供虚拟中断挂起信息。

VIF(Virtual Interrupt Flag):虚拟中断标志,是虚拟方式下中断标志位的映像。

1.5 存储器

1.5.1 基本概念

计算机中存储信息的基本单位是1个二进制位,简称位(bit),可用小写字母b表示,一位可存储一位二进制数。

IBM PC机中常用的数据类型如下。

字节(byte):IBM PC机中存取信息的基本单位,可用大写字母B表示。1个字节由8位二进制数组成,其位编号自左至右为b7、b6、b5、b4、b3、b2、b1、b0。1个字节占用1个存储单元。

字:1个字16位,其位编号为b15~b0。1个字占用2个存储单元。

双字:1个双字32位,其位编号为b31~b0。1个双字占用4个存储单元。

四字:1个四字64位,其位编号为b63~b0。1个四字占用8个存储单元。

为了正确地区分不同的内存单元,给每个单元分配一个存储器地址,地址从0开始编号,顺序递增1。在计算机中地址用无符号二进制数表示,可简写为十六进制数形式。一个存储单元中存放的信息称为该单元的内容。例如2号单元中存放了一个数字8,则表示为:(2)=8。

对于字、双字、四字数据类型,由于它们每个数据都要占用多个单元,访问时只需

给出最低单元的地址号即可,然后依次存取后续字节。

注意按照Intel公司的习惯,对于字、双字、四字数据类型,其低地址中存放低位

字节数据,高地址中存放高位字节数据,这就是有些资料中称为“逆序存放”的含义。

例如内存现有以下数据(后缀H表示是十六进

制数)。

地址:0 1 2 3 4 5,

内容:12H 34H 45H 67H 89H 0AH,

存储情况如图 1.5所示,则对于不同的数据类

型,从1号单元取到的数据是:图1.5 存储单元的地址和内容

(1)字节=34H

(1)字=4534H

(1)双字=89674534H

1.5.2 实模式存储器寻址

IBM P C机的存储器采用分段管理的方法。存储器采用分段管理后,一个内存单元地

址要用段基地址和偏移量两个逻辑地址来描述,表示为段地址: 偏移量,其段地址和偏移量的限定、物理地址的形成要视CPU工作模式决定。

80386以上型号的CPU有3种工作模式:实模式、保护模式和虚拟86模式。在实模式下,这些CPU就相当于一个快速的8086处理器,DOS操作系统运行在实模式。计算

机在启动时,也自动进入实模式。保护模式是它们的主要工作模式,提供了4GB的段尺寸、多任务、内存分段分页管理和特权级保护等功能,Windows和Linux等操作系统都需要在保护模式下运行。为了既能充分发挥处理器的功能,又能继续运行原有的DOS和DOS应用程序(向下兼容),还提供了一种虚拟86模式(Virtual86模式),它实际上是保护模式下的一种工作方式。在V86模式下,存储器寻址类似于8086,可以运行DOS 及其应用程序。

显然,实模式是80x86 CPU工作的基础,本节讨论实模式存储器寻址。8086和8088微处理器只能工作在实模式,80286以上的微处理器既可以工作在实模式也可以工作在

保护模式。在实模式下微处理器只可以寻址最低的1MB内存,即使计算机实际有64MB 或更多的内存也是如此。

在实模式下存储器的物理地址由段基址和偏移量给出。由于8086、8088、80286的寄存器均为16位,为了与它们兼容,无论是哪一种微处理器,其段基址必须定位在地

址为16的整数倍上,这种段起始边界通常称做节或小段,其特征是:在十六进制表示

的地址中,最低位为0。有了这样的规定,1MB空间的20位地址的低4位可以不表示出,而高16位就可以放入段寄存器了。同样由于16位长的原因,在实模式下段长不能超过64KB,但是对最小的段并没有限制,因此可以定义只包含1个字节的段。段间位置可以

相邻、不相邻或重叠。

存储器采用分段管理后,其物理地址的计算方法为:

10H×段基址+偏移量(其中H表示是十六进制数)

因为段基址和偏移量一般用十六进制数表示,所以简便的计算方法是在段基址的最

低位补以0H,再加上偏移量。例如,某内存单元的地址用十六进制数表示为2345 : 6789,则其物理地址为29BD9H。如图1.6所示。

图1.6 物理地址的形成

可以用不同的段基址: 偏移量表示同一个物理地址。例如可以用1000 : 1F00、11F0 : 0000、1100 : 0F00,甚至1080 : 1700表示同一个物理地址,因

为它们计算出来的物理地址都是11F00H。

1.6 外部设备

计算机运行时需要的程序和数据及所产生的结果要通过输入输出设备与人交互,或

者需要保存在大容量的外存储器中,因此外部设备(简称外设)是计算机不可缺少的重

要组成部分,对外设进行驱动或访问是汇编语言的重要应用领域之一。

外设与主机的信息交换是通过外设接口进行的,每个接口中都有一组寄存器,用来

存放要交换的数据、状态和命令信息,相应的寄存器也被称为数据寄存器、状态寄存器

和命令寄存器。视外设工作的复杂程度,不同的外设接口中含有的寄存器个数有所不同。

为了能区分这些寄存器并且便于主机访问,系统给每个接口中的寄存器赋予一个端口地

址或称做端口号,由这些端口地址组成了I/O地址空间。在IBM PC系列机中,虽然CPU 的型号不同导致了所提供的内存地址总线宽度不同,从而最大可寻址内存空间不同,但它所提供的I/O地址总线宽度总是16位的,所以允许最大的I/O寻址空间为64K。在IBM PC系列机中,由于I/O地址空间是独立编址的,因此系统需要提供独立的访问外

设指令。

通常在应用程序中通过调用DOS或BIOS中断来实现对外设的访问,以便降低程序

设计的复杂程度,缩短开发周期。

习题

1.简述汇编语言源程序、汇编程序和目标程序的关系。

2.简述汇编语言的优缺点。

3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少?

4.1KB的存储器有多少个存储单元?

5.指令中的逻辑地址由哪两部分构成?

6.以下为用段基址: 偏移量形式表示的内存地址,试计算它们的物理地址。

(1)12F8 : 0100 (2)1A2F : 0103 (3)1A3F : 0003 (4)1A3F : A1FF 7.自12FA : 0000开始的内存单元中存放以下数据(用十六进制形式表示):03 06 11 A3 13 01,试分别写出12FA : 0002的字节型数据、字型数据及双字型数

据的值。

8.内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少? 若段内偏移地址为2228H,则段基地址为多少?

9.在实模式环境中,一个段最长不能超过多少字节?

10.实模式可寻址的内存范围是多少?

汇编语言 快速入门

“哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二、汇编直接与硬件打交道,如果你想搞通程序在执行时在电脑中的来龙去脉,也就是搞清电脑每个组成部分究竟在干什么、究竟怎么干?一个真正的硬件发烧友,不懂这些可不行。三、如今玩DOS的多是“高手”,如能像吾一样混入(我不是高手)“高手”内部,不仅可以从“高手”朋友那儿套些黑客级“机密”,还可以自诩“高手”尽情享受强烈的虚荣感--#$%&“醒醒!” 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指

最新-单片机原理及应用期末考试必考知识点重点总结 精品

单片机概述 单片机是微单片微型计算机的简称,微型计算机的一种。 它把中央处理器(CPU),随机存储器(RAM),只读存储器(ROM),定时器\计数器以及I\O 接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。 字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位数称为“字长”,字长标志着精度,MCS-51是8位的微型计算机。 89c51 是8位(字长)单片机(51系列为8位) 单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。 由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单,工作可靠稳定。 单片机软件系统包括监控程序,中断、控制、初始化等用户程序。 一般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码)。 1.1单片机的半导体工艺 一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点; 另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有CMOS的低功耗的特点。例如:8181的功耗是630mW,80C51的功耗只有110mW左右。1.2开发步5骤: 1.设计单片机系统的电路 2.利用软件开发工具(如:Keil c51)编辑程序,通过编译得到.hex的机器语言。 3.利用单片机仿真系统(例如:Protus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。 4.借助单片机开发工具软件(如:STC_ISP下载软件)读写设备将仿真中调试好的.hex程序拷到单片机的程序存储器里面。 5.根据设计实物搭建单片机系统。 2.1MCS-51单片机的组成:(有两个定时器) CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。 工作过程框图如下:

汇编语言程序设计教学大纲

《汇编语言程序设计》课程教学大纲 二、课程简介 汇编语言是计算机能够提供给用户使用的最快最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对程序的空间和时间要求很高的场合及需要直接控制硬件的应用场合,汇编语言的应用是必不可少三、课程目标 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学 生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程序设计及相关 知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基础。通过 上机实验,使学生受到软硬件实验的初步训练,并培养学生分析问题和解决问题 的能力。 四、教学内容及要求 第一章基础知识 1.教学内容 (1) 为什么要用汇编语言编写程序 (2) 进位计数制与不同基数的数之间的转换 (3) 二进制数和十六进制数运算 (4) 计算机中数和字符的表示 (5) 几种基本的逻辑运算 2.基本要求 了解机器指令、代码指令、机器语言、汇编指令、汇编语言、汇编语言源程 序、汇编程序、汇编等概念;掌握进位计数制与不同基数的数之间的转换及

运算;计算机中数和字符的表示;“与”、“或”、“非”、“异或”等几种基本的逻辑运算; 第二章80X86计算机组织 1.教学内容 计算机系统概述、存储器、中央处理机和外部设备。 2.基本要求 理解计算机的硬件和软件系统及其关系。掌握计算机的基本结构及总线;存储器的内容、地址及存储器的分段;中央处理机的组成、80X86系列CPU工作寄存器构成和功能,特别是段寄存器和标志寄存器;外设接口、端口和8086/8088的端口地址范围和访问方法。 第三章80X86的指令系统 1.教学内容(重点内容) IBM PC机的寻址方式、IBM PC机的指令系统。 2.基本要求 熟练掌握IBM PC机寻址方式及物理地址的计算;数据传送、算术、逻辑、串处理、控制转移和处理机控制指令六组中的所有指令的格式、操作、及影响的标志位。了解机器语言的指令组成; 第四章汇编语言程序格式 1.教学内容 汇编程序功能、伪操作、汇编语言程序格式、汇编语言程序的上机过程。 2.基本要求 掌握DEBUG程序和命令及能用DEBUG 程序调试和运行简单小程序;汇编语言上机步骤、汇编程序的功能;数据定义及存储器分配、表达式赋值“EQU”和“=”、段定义、程序开始和结束、对准、基数控制等六类伪操作;汇编语言程序格式中的名字、操作、操作数和注释等项。 第五章循环与分支程序设计 1.教学内容 程序设计的一般步骤和基本结构、循环程序设计和分支程序设计 2.基本要求 掌握汇编语言程序的编制步骤和结构化程序设计的三种基本结构;循环的设计方法和多层循环的设计;分支程序的设计方法,并能编制相应的程序。第六章子程序结构 1.教学内容 子程序的设计方法、嵌套与递归子程序、子程序举例和DOS系统功能调用

汇编语言入门

汇编语言入门教程 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS 的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。 内存是电脑运作中的关键部分,也是电脑在工作中储存信息的地方。内存组织有许多可存放

基础的汇编语言小程序

基础的汇编语言小程序 1.1 Hello World !程序(完整段) (注:所有的标点符号以及空格回车均为英文输入法状态下的,否则报错!) DATAS SEGMENT STRING DB ‘Hello World !’,13,10,’$’ DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H CODES ENDS END START 1.2 Hello World !程序(简化段) .MODEL SMALL .DATA

STRING DB’Hello World !’,13,10,’$’ .STACK .CODE .STARTUP LEA DX,STRING MOV AH,9 INT 21H .EXIT END 2.1完整段的求3+5的和 DATA SEGMENT FIVE DB 5 DATAS ENDS STACKS SEGMENT DB 128 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CD:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL,FIVE

ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 MOV AH,4CH INT 21H CODES ENDS END START 2.2;简化段的求3+5的和.MODEL SMALL .DATA FIVE DB 5 .STACK DB 128 DUP (?) .CODE .STARTUP MOV AL,FIVE ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H

计算机导论知识点总结

计算机导论知识点总结 指令系统:一台计算机中所有指令的的集合,它是表征一台计算机性能的重要指标。 微型计算机中,控制器的基本功能是指令的操作数。 USB总线是以串行方式传输数据。 计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其 特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是计算机各部分之间实现信息传递的通道。 数据结构:数据结构是指具有一定的结构(关系)的数据元素的集合,主要研究数据的各种逻辑结构和物理结构,以及对数据的各种操作。 进程:一个程序(或者程序段)在给定的工作空间和数据集合上的一次执行过程,它是操作系统进行资源分配和调度的一个独立单位。 程序计数器:由若干位触发器和逻辑电路组成,用来存放将要执

行的指令在储存器中存放地址。 机器指令:计算机执行某种操作的命令,可由cpu直接执行。 cpu主要的技术指标: 1.字长:cpu一次处理的二进制数的位数。 2.主频:cpu内部工作的时钟频率,是cpu运算时的工作频率。 3.地址总线宽度:决定了cpu可以访问储存器的容量,不同型号cpu的总线宽度不同,因而可使用的内存的最大容量也不同。 4.数据总线宽度:决定了cpu与内存,I/0设备之间一次数据传输的信息量。 5.高度缓冲:可以进行高速数据交换的存储器,它先于内存,与cpu交换数据。 6.指令系统:指令的寻址方式越灵活,计算机的处理能越强。 7.机器可靠性:平均无故障时间越短,机器性能月好。 计算机硬件主要由运算器,控制器,储存器,输入设备,输出设备和(总线)组成 1.运算器:主要完成算数运算和逻辑运算。 2.控制器:实现取指令,分析指令和执行指令操作的控制,实现对整个运算过程的有规律的控制。 3.储存器:是用来存放数据和程序的部件,可以分为主存储器(也称内存储器),和辅助存储器。 4.输入设备,输出设备:是实现计算机系统与人(或者其他系统)之间进行信息交换的设备。输入设备将外界信息转化为

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。 据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。 四.内存地址空间:1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。

4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位 注意1.范围:16位的2^16-1,8位的2^8-1 2.进行数据传送或运算时要注意位数对应,否则会报错 二.字:1. 1个字==2个字节。 2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元 数制,16进制h,2进制b

汇编语言基本关键字

汇编语言基本关键字 aaa对非压缩BCD码加法之和调整 aas 对非压缩BCD码减法之差调整 aam乘法调整aad被除数调整 add不带进位标志位的加法adc带进位标志位的加法 and逻辑与 assume指定段寄存器 bswap双字单操作数内部交换 bt位测试bts位测试并置一 btr位测试并清零btc位测试并取反 bsf/bsr正,反向位扫描 call调用 cbw字节转换为字cwd字转换为双字cwde字转换为扩展的双字cdq双字转换为四字 cmp比较cmpxchg比较并交换 cmps串比较 code定义简化代码段 const定义简化常数数据段 daa对压缩BCD码加法之和调整das对压缩BCD码减法之差调整 data定义简化数据段 db/dw/dd/dq/dt定义字节/字/双字/四字/十字变量 dec减一

df定义32位便宜地址的远地址指针 div无符号数除法 equ等价textequ文本等价 even取偶偏移地址 fardata,fardata定义简化独立数据段 group定义段组 idiv有符号整数除法 imul有符号整数乘法 in输入 inc加一 ins/outs输入/输出串元素 jcxz/jecxz若cx=0/ecx=0,跳转 jmpdopd无条件跳转到DOPD 处取出指令继续执行 label为$定义符号 Lahf 标志位低八位送AH lea 偏移地址送通用寄存器lda传送进入数据段的地址指针 les传送进入附加数据段的地址指针lfs传送进入FS段的地址指针lgs传送进入GS段的地址指针lss传送进入堆栈段的地址指针 local说明局部变量 lods读出串元素 Loop/loopd无条件循环cx/ecx为循环次数 loopnz/loopnzd非零或不等时循环,cx/ecx为循环次数

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主 编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

汇编语言-高频考点

汇编语言重点知识总结 汇编速查手册汇编语言总结概要寄存器与存储器 1.寄存器功能 .寄存器的一般用途和专用用途 .CS:IP 控制程序执行流程.SS:SP 提供堆栈栈顶单元地址.DS:BX(SI,DI)提供数据段内单元地址.SS:BP 提供堆栈内单元地址 .ES:BX(SI,DI)提供附加段内单元地址 .AX,CX,BX 和CX 寄存器多用于运算和暂存中间计算结果,但又专用于某些指令(查阅指令表)。.PSW 程序状态字寄存器只能通过专用指令(LAHF,SAHF)和堆栈(PUSHF,POPF)进行存取。 2.存储器分段管理 .解决了16位寄存器构成20位地址的问题 .便于程序重定位 .20位物理地址=段地址*16+偏移地址 .程序分段组织:一般由代码段,堆栈段,数据段和附加段组成,不设置堆栈段时则使用系统内部的堆栈。 3.堆栈 .堆栈是一种先进后出的数据结构,数据的存取在栈顶进行,数据入栈使堆栈向地址减小的方向扩展。 .堆栈常用于保存子程序调用和中断响应时的断点以及暂存数据或中间计算结果。.堆栈总是以字为单位存取 指令系统与寻址方式 1.指令系统 .计算机提供给用户使用的机器指令集称为指令系统,大多数指令为双操作数指令。执行指令后,一般源操作数不变,目的操作数被计算结果替代。 .机器指令由CPU 执行,完成某种运算或操作,8086/8088指令系统中的指令分为6类:数据传送,算术运算,逻辑运算,串操作,控制转移和处理机控制。 2.寻址方式 .寻址方式确定执行指令时获得操作数地址的方法 .分为与数据有关的寻址方式(7种)和与转移地址有关的寻址方式(4)种。 .与数据有关的寻址方式的一般用途: (1)立即数寻址方式--将常量赋给寄存器或存储单元 (2)直接寻址方式--存取单个变量 (3)寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度计算机、电子信息、通信工程专业适用涉及微机原理、单片机原理 本资料结合知识点整理了近年来各名校复试真题 考研 专业课复试 高频考点复习指导 8086对存储器进行访问取指令时,物理地址可由(CS和IP )组合产生。设SS=3300H,SP=1140H,在堆栈中压入5个字数据后,又弹出两个字数据,则SP=(113AH )。利用DOS系统功能调用的9号(AH=9)功能,显示一个字符串,其入口参数应为 (DS:DX=字符串首地址)。在指令MOV AX,0 执行后,CPU状态标志位ZF的取值(不改变) 执行MOV PSW,#10H是将MCS-551的工作寄存器位置为(第2组) 某数存于内存数据段中,已知该数据段的段地址为2000H,而数据所在单元的偏移位置为0120H,该数据在内存的物理地址为(20120H ) MCS-51单片机的堆栈区应建立在(片内数据存储区的高128字节单元)MCS-51单片机的位寻址区位于内部RAM的(20H-2FH)单元

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

汇编语言基础知识

汇编语言基础知识 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有 效地应用汇编语言对其编程,因此,本章对硬件系统结构的问题进行部分探讨,首先介绍了计算机的基本结构、Intel 公司微处理器的发展、计算机的语言以及汇编语言的特点,在此基础上重点介绍寄存器、内存组织等汇编语言所涉及到的基本知识。 1.1 微型计算机概述 微型计算机由中央处理器(Central Processing Unit ,CPU )、存储器、输入输出接口电路和总线构成。CPU 如同微型计算机的心脏,它的性能决定了整个微型计算机的各项关键指标。存储器包括随机存储器(Random Access Memory ,RAM )和只读存储器(Read Only Memory ,ROM )。输入输出接口电路用来连接外部设备和微型计算机。总线为CPU 和其他部件之间提供数据、地址和控制信息的传输通道。如图1.1所示为微型计算机的基本结构。 外部设备存储器输入输出接口电路中央处理器 CPU 地址总线 数据总线 控制总线 图1.1 微型计算机基本结构 特别要提到的是微型计算机的总线结构,它使系统中各功能部件之间的相互关系变 为各个部件面向总线的单一关系。一个部件只要符合总线结构标准, 就可以连接到采用这种总线结构的系统中,使系统功能得到扩展。 数据总线用来在CPU 与内存或其他部件之间进行数据传送。它是双向的,数据总线 的位宽决定了CPU 和外界的数据传送速度,8位数据总线一次可传送一个8位二进制数据(即一个字节),16位数据总线一次可传送两个字节。在微型计算机中,数据的含义是广义的,数据总线上传送的不一定是真正的数据,而可能是指令代码、状态量或控制量。 地址总线专门用来传送地址信息,它是单向的,地址总线的位数决定了 CPU 可以直接寻址的内存范围。如 CPU 的地址总线的宽度为N ,则CPU 最多可以寻找2N 个内存单 元。

Windows汇编语言程序设计基础

第1章Windows汇编语言程序设计基础 Windows汇编语言程序分为控制台编程和图形界面编程两种,控制台编程相对简单一些。为了由浅入深,本书从控制台编程开始讲解。 读者总希望用最快的速度掌握书中的概貌,为此从一个最简单的程序开始。一些汇编语言语法也结合程序进行讲解,有些指令和语法用注解的方法说明。 1.1 第一个完整的Windows汇编语言程序 Windows汇编语言程序有自己的编程规范,它的编程规范比Visual C要简单得多,调试也很方便。更重要的是系统把重要的东西都呈现给读者,使读者更能掌握其中的本质。 用一条一条的汇编语言指令很难写出大程序,Windows汇编语言程序也是调用系统提供的API来写程序。因而,用Windows汇编语言同样可写出大程序。以下是一个最简单的Windows程序。 ;程序功能:显示一个信息框。 ;ex1.asm(e:\masm\base) ;程序名 ;编译链接方法: ;ml /c /coff ex1.asm ;link /subsystem:console ex1.obj .386 ;指明指令集 .model flat,stdcall ;程序工作模式,flat为Windows程序使用的模式(代码和数据 ;使用同一个4GB段),stdcall为API调用时右边的参数先入栈option casemap:none ;指明大小写敏感 include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .data ;数据段 szCaption db '抬头串',0 szText db 'Hello!',0 .code ;代码段 start:

计算机系统结构知识点复习考点归纳总结

0.从(使用语言的)角度可以将系统看成是按(功能)划分的多个机器级组成的层次结构 1、从计算机系统执行程序的角度看,并行性等级由低到高分为(指令内部)、(指令之间)、(任务或进程之间)和(作业或程序之间)四级。 2、从计算机系统中处理数据的并行性看,并行性等级从低到高分为(位串字串)、(位并字串)、(位串字并)和(全并行)。 3、存储器操作并行的典型例子是(并行存储器系统和相联处理机),处理机操作步骤并行的典型例子是(流水线处理机),处理机操作并行的典型例子是(阵列处理机),指令、任务、作业并行的典型例子是(多处理机)。 4、开发并行的途径有(时间重叠),资源重复和资源共享。 5、计算机系统多级层次中,从下层到上层,各级相对顺序正确的应当是(微程序机器级,传统机器语言机器级,汇编语言机器级)。 6、对系统程序员透明的应当是(CACHE存储器、系列机各档不同的数据通路宽度、指令缓冲寄存器) 7、对机器语言程序员透明的是(主存地址寄存器) 8、计算机系统结构包括(机器工作状态、信息保护、数据表示) 9、对汇编语言程序员透明的是(I/O方式中的DMA访问) 10、属计算机系统结构考虑的是(主存容量和编址方式) 11、从计算机系统结构上讲,机器语言程序员所看到的机器属性是(编程要用到的硬件组织) 12、计算机组成设计考虑(专用部件设置、控制机构的组成、缓冲技术) 13、在多用户机器上,应用程序员能使用的指令是(“执行”指令、“访管”指令、“测试与置定”指令) 14、软硬件功能是等效的,提高硬件功能的比例会(提高解题速度、提高硬件成本、减少所需存储器用量) 15、下列说法中正确的是(软件设计费用比软件重复生产费用高、硬件功能只需实现一次,而软件功能可能要多次重复实现、硬件的生产用比软件的生产费用高) 16、在计算机系统设计中,比较好的方法是(从中间开始向上、向下设计)。 17、推出系列机的新机器,不能更改的是(原有指令的寻址方式和操作码)。 18、不同系列的机器之间,实现软件移植的途径包括(用统一的高级语言、模拟、仿真)。 19、在操作系统机器级,一般用(机器语言)程序(解释)作业控制语句。 20、高级语言程序经(编译程序)的(翻译)成汇编语言程序。 21、传统机器语言机器级,是用(微指令程序)来(解释)机器指令。 22、汇编语言程序经(汇编程序)的(解释)成机器语言程序。 23、微指令由(硬件)直接执行。 24、系列机软件必须保证(向后兼容),一般应做到(向上兼容) 25、在计算机系统的层次结构中,机器被定义为(能存储和执行相应语言程序的算法和 数据结构)的集合体 26、优化性能价格比指(在某种价格情况下尽量提高性能)或(在满足性能前提下尽量降低价格)。 27、目前,M0由(硬件)实现,M1用(固件)实现,M2至M5大多用(软件)实现。 28、系列机中(中档机)的性能价格比通常比(低档机、高档机)的要高 29、(计算机组成)着眼于机器级内各事件的排序方式,(计算机体系结构)着眼于对传统机器级界面的确定,(计算机组成)着眼于机器内部各部件的功能,(计算机实现)着眼于微程序设计。 30、计算机系统结构也称(计算机体系结构),指的是(传统机器级)的系统结构。 31、用微程序直接解释另一种机器指令系统的方法称为(仿真),用机器语言解释

微机实验一 汇编语言程序调试基础训练

实验一汇编语言程序调试基础训练 实验目的: 1、学习、掌握汇编程序的编辑、编译、链接的方法 2、学习常用的DEBUG命令,掌握汇编程序调试方法 3、通过调试程序,弄清汇编指令和机器码的关系 4、弄清代码段、数据段、堆栈段中的段地址和偏移量的形成 实验内容: 1、源程序的编辑 2、源程序的编译、链接 3、汇编程序调试,完成相关数据的记录和分析 实验步骤: 一、源程序的编辑、编译、链接 1、在E盘建立L8086文件夹,将L8086文件全部拷入该目录 2、用EDIT或写字板编辑器,将例程BBADD.ASM输入计算机,以 BBADD.ASM文件名保存程序 3、用MASM.EXE工具将源程序编译成BBADD.OBJ文件 4、用LINK.EXE工具将目标文件链接成BBADD.EXE可执行文件 二、程序载入和退出 1、进入DOS命令提示符界面 2、将路径切换至:E>L8086> 3、输入DEBUG BBADD.EXE 回车,此时程序载入到DEBUG调试 状态 4、按Q回车,则退出调试状态返回到操作系统 三、程序的调试 1、在DEBUG调试状态,输入U回车,显示

此时可以看到源程序经编译后,载入到计算机内存中每一条指令所对应的机器码;可以看到指令在代码段中所处的段地址和偏移量等信息。对照源程序填写以下信息: 程序起始地址:[ :] 程序结尾地址:[ :] 用户数据段地址:[ ] 变量R0分得的地址:[ ] 变量R2分得的地址:[ ] 变量R3分得的地址:[ ] 变量R4分得的地址:[ ] 以上信息说明:U命令可以显示反汇编信息 2、输入R回车,显示以下的信息: 这是CPU内所有寄存器信息,注意观察和记录 (1)段地址信息:CS= DS= SS= ES= (2)通用寄存器信息: AX= BX= CX= DX= SI= DI= BP=

高中信息技术学业水平考试Word、Excel操作题考点总结

Word操作题考点总结 常用工具栏、格式工具栏的调出:视图菜单——工具栏——常用、格式 1、设置字体、添加底纹 字体的设置:选中文字——格式——字体 字符间距、文字效果的设置:选中文字——格式——字体——字符间距、文字效果底纹的设置:选中文字——格式——边框和底纹 2、设置段落、行距 选中段落——格式——段落——行距、首行缩进(找特殊格式)、段前段后、左缩进右缩进 3、页面设置 文件——页面设置页边距(上下左右)、纸型 4、图片 插入图片:先把光标放到插入的位置,插入——图片——来自文件 图片大小设置:选中图片——格式——图片——大小——输入高、宽值(根据情况取消或勾选“锁定纵横比”) 图片环绕方式的设置:选中图片——格式——图片——版式——选择合适的环绕方式(若找不到需要的环绕方式,点击高级) 5、艺术字 插入艺术字:先把鼠标光标放到插入的位置,插入——图片——艺术字 艺术字环绕方式的设置:选中艺术字(鼠标呈四向箭头单击)——格式——艺术字——格式、版式 更改艺术字的样式、字体:选中艺术字——艺术字工具栏(若没有,选择视图菜单——工具栏——艺术字) 6、自选图形 插入自选图形:插入——图片——自选图形——出现自选图形对话框选中合适的图形,然后拖拉鼠标绘制图形 自选图形的设置:选中自选图形——格式——自选图形——设置自选图形格式——颜色线条、大小、版式 7、文本框 插入文本框:插入——文本框——横排、竖排 文本框的设置:文本框上单击——格式——文本框——设置文本框格式——颜色线条、大小、版式 8、项目编号 选中需要添加项目符号的段落——格式——项目符号和编号——编号 9、特殊符号 插入——特殊符号——特殊符号 10、分栏 分栏:格式——分栏——选择分的栏数 取消分栏:格式——分栏——选择一栏 11、页眉和页脚、页码 视图——页眉和页脚 插入——页码 12、新建Word文件 找到要求的文件夹——空白处右击——新建——Microsoft Word文档——输入文件名

汇编语言小程序

16进制转化为10进制STACK SEGMENT STACK'STACK' DW100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT KEYBUFFER DB100 ;DB ? ;DB 100 DUP(?) DECIMAL DB 5 DUP(?) STRING1 DB'PLEASE INPUT DECIMAL DATA:$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,CS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SS,AX LEA SP,TOP LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,0AH LEA DX,KEYBUFFER ;MOV AX,23456 INT 21H ;LEA SI,KEYBUFFER MOV AX,DX LEA DI,DECIMAL CALL DISPAX MOV AH,4CH MOV AL,0 INT 21H DISPAX PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,DECIMAL

CALL TRANS16TO10 MOV CX,5 LEA DI,DECIMAL+4 MOV AH,2 DISPAXD: MOV DL,[DI] ADD DL,30H DEC DI INT 21H LOOP DISPAXD POP DI POP DX POP CX POP BX POP AX RET DISPAX ENDP TRANS16TO10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV BX,10 MOV CX,5 LOOP1: XOR DX,DX DIV BX MOV[DI],DX INC DI LOOP LOOP1 LEA DX,DECIMAL MOV AH,09H INT 21H POP DI POP DX POP CX POP BX POP AX RET TRANS16TO10 ENDP

汇编语言程序设计知识点

汇编语言程序设计知识点 第一章基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; 1、假设机器字长为8位,[+3]补 =00000011B,[-3]补= FD H 。 2、十六进制数0F8H表示的十进制正数为 248 ,表示的十进制负数为 -8。 3、8位二进制数被看成是带符号补码整数时,其最小值是 -128,最大值是 127 。 4、计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是ASCII 码,称为美国信息交换标准码。 第二章80x86计算机组织 (1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器 1、IP寄存器中保存的是?下一条指令的首地址 2、FLAGS标志寄存器中共有几位条件状态位?6位 3、有几位控制状态位?3位 4、标志寄存器分为哪2类?条件码,控制 5、哪个标志位用来控制可屏蔽中断请求是否被CPU响应?IF 6、键盘I/O、显示I/O和打印I/O分别对应16、10和17号中断。 (2)存储单元的地址和内容,存储器地址的分段,实模式下逻辑地址、物理地址的表示。 1、如果SS=6000H,说明堆栈段起始物理地址是60000H。 2、已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为1420H 。 3、如果数据段中一个内存单元对应的物理地址为3F756H,(DS)=3F00H,那么使用DS段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元756H。 4.如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章80x86的指令系统和寻址方式 (1)与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址).数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS指令,与REPE/REPZ和REPNE/REPNZ

相关主题