第 1章 基 础 知 识第 1章 基 础 知 识
1.1 微型计算机系统的发展
1.2 汇编语言程序设计
1.3 数据表示方法
1.4 结果的输出与打印第 1章 基 础 知 识
1.1 微型计算机系统的发展
1.1.1 微机技术的发展概况
1.处理速度微型计算机的处理速度在不断提高,主要表现在以下几个方面:
(1) CPU的主频不断提高,如从 4.77 MHz的 8088CPU提高到几个 GHz的 PentiumⅣ,这主要是因为半导体制造工艺水平的提高。
(2) 增加了数据运算的宽度,从早期的 8位发展到现在的 32位、
64位,128位甚至更高。
第 1章 基 础 知 识
(3) 采用了 RISC技术。从 CISC体系结构转变为 RISC体系结构后,在同样的工艺水平 (即同样的主频、同样的工艺尺寸、同样的芯片面积 )下,使 CPU的速度和性能有了很大的提高。
(4) 降低电路工作电压,不断缩小工艺尺寸。工作电压的降低有利于工艺尺寸的缩小。
(5) 增加了芯片内并行工作的信息处理部件,如整数部件、
浮点加法器、浮点乘法器、图形部件等。芯片内具有两个以上的并行指令流水线,每次并行地向各流水线分配多条指令以进行并行处理,这是利用硬件资源的重复来换取芯片性能的提高。
第 1章 基 础 知 识
2.存储容量微机的计算、处理速度的提高必然要求存取信息的速度相应提高。当今存储器速度还远远跟不上 CPU的速度,而存储容量的大小是与存取速度相矛盾的,因而只能采用分级存储方式。
(1) 芯片内的寄存器堆、指令 Cache和数据 Cache (4~ 16 KB)
都能在一个时钟周期完成存取,而且随着 VLSI的发展其容量将继续增加。
(2) 芯片外的二级指令 Cache和数据 Cache,其大小在 16~
256 KB。
第 1章 基 础 知 识
(3) 主存储器的大小在 1 MB到几百个 MB。
(4) 外部存储器仍以软盘、硬盘、光盘为主要介质,其容量可在 1 MB至上百个 GB。由于 RAM芯片性能价格比提高,因而为克服外部存储器的慢速寻找,一般都采用 RAM Cache(256
KB~ 2 MB)来减小等待时间。
除了解决大容量存储外,外部存储器还具有掉电时的信息保持特性。快擦存储器 (Flash Memory)芯片的普及为外部存储提供了一种新的实现方法。
第 1章 基 础 知 识
3.人机接口传统的键盘输入、显示、打印输出已经不能满足人们的需要,人们希望计算机有更生动、直观、灵活的用户界面,最好能像人一样既可以接收、识别并理解声、文、图信息,又能给出声音、视像等信息。微型计算机系统性能的提高,价格的下降,已经为这些技术的实用化提供了基础。计算机处理视像和声音的多媒体技术也逐步地进入到各个应用领域。
第 1章 基 础 知 识
1) 汉字识别汉字识别要比英文、数字识别难得多,因为汉字字数多、字体多。汉字识别是从扫描输入开始的,现在扫描仪的扫描精度已经完全够用,对静止图像输入来说其扫描精度与彩色分辨率也已能满足要求。通过对版面的分析和汉字的切分,计算机可对汉字进行识别。由于汉字字数多、字体多,因而其特征的选择与提取是识别的关键。印刷体汉字的识别已实用化,一般识别率为 95%以上,识别速度为 20~ 30字 /秒。
第 1章 基 础 知 识
2) 语音识别汉语中一个汉字对应一个单音节,能独立发音的单音节 (包括 4种声调 )只有 1283个,从这点看对汉语的语音识别较为有利。
但汉语中同音字很多,因而单音节识别率的提高是有难度的,
利用字构成词的相关信息,词的识别率可以提高。中词表的特定人与小词表的非特定人的汉语语音识别已初步达到实用水平。
第 1章 基 础 知 识
3) 视频图像输入从摄像机、录像机和彩电中来的视频图像信息,通过视频处理部件转换成二进制代码,以一定的图像文件格式存入计算机的外部存储器中。以 VGA全屏显示方式计算 (分辨率为
640× 480,共 256种色彩 )则显示一帧所需存放的信息为 300 KB。
如果以 50帧计算,则存放连续半小时的视像信息需要 27 GB,对当前微型机来说这个信息量太大了。
第 1章 基 础 知 识由于图像对视觉的感受是整体的,部分的少量的错误不会引起直观的错误,因而图像信息的存储可采用不完全复真的压缩和还原方法。如用 JPEG算法可使图像信息压缩为原来的 1/8~
1/25,静止图像即相当于一帧视像,需存储 300 KB/幅,经过压缩后存储,即使有 1万幅图像也只需 120 MB的存储量。因而,当今微型机系统完全可以用于图像数据库。
第 1章 基 础 知 识
4.语音合成声音的输出可分为两种情况,一种是声音采样存储后再回放,一种是文-语的转换。
对语音和音乐的采样要求是不同的。语音采样频率在 16~
32 kHz,精度在 8位左右即可,音乐的采样频率在 40 kHz,精度要 14位左右。如果不采取压缩方法的话,连续半小时的乐曲存储量为 144 MB,这个存储量还是很大的。因而,一般都采用压缩算法,语音可压缩为原来的 1/8,而音乐仅能压缩到原来的 1/4。
用上述采样方法存储后再回放,可以和原信号毫无差异。数字录音技术即采用这种方法。
第 1章 基 础 知 识
1.1.2 Intel微处理器体系及其演变在介绍 Intel微处理器体系之前,先介绍微处理器
(Microprocessor)、微型计算机 (Microcomputer)和微型计算机系统
(Microcomputer System)这三个概念。
微处理器,简称 μP或 MP,是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理机部件,即
CPU(Control Processing Unit)。微处理器本身并不等于微型计算机,它仅仅是微型计算机的中央处理器。
第 1章 基 础 知 识微型计算机,简称 pC或 MC,是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入 /输出接口电路及系统总线所组成的计算机 (简称微型机 )。如果把 CPU、存储器和输入 /输出接口电路都集成在单片芯片上,这样构成的微型计算机称为单片微型计算机 (简称单片机 )。
微型计算机系统是指以微型计算机为中心,配以相应的外围设备、电源、辅助电路 (统称硬件 )以及控制微型计算机工作的系统软件所构成的计算机系统,简称 μCS或 MCS。
第 1章 基 础 知 识在 20世纪 70年代,Intel的 8080,8085,Motorola的 6800,6808
与 Zilog的 Z80都是 8位微处理器,但发展到 16位及 16位以上微处理器时,只有 Intel与 Motorola两种产品,Zilog公司落后了。 Motorola
公司的 MC68000功能强于 Intel 8086,在工作站领域得到广泛使用。
但由于 IBM公司推出的 IBM PC,PC/XT与 PC/AT及大量兼容机采用了 Intel公司的微处理器芯片,使得 Intel公司实力大增。尤其是
Intel 32位微处理器芯片 80386,80486与 1993年推出的 Pentium,使
Intel微处理器成为微型机市场首选的 CPU芯片类型。目前,Intel的
Pentium系列微处理器更使人有一枝独秀的感觉。
微处理器是微型机的心脏,它是利用超大规模集成电路技术将计算机 CPU集成在一块硅片上。微型机性能的优劣基本取决于所选用的微处理器芯片功能的强弱。
第 1章 基 础 知 识
1.1.3 Intel微处理器的主要特点
1971年推出的 4004及其改进型 4040,是一种 4位的微处理器芯片,它具备 MPU的基本特点,有专用指令读入键盘数据,
进行十进制运算,每次处理 4位数据,能与键盘、存储器、显示器一起构成一个简单系统。
1972年推出了 8008及其改进型 8080,8080是一种 8位的微处理器芯片,寻址空间为 64 KB。它集成了 16位的算术逻辑单元 (ALU)和六个通用寄存器,以及程序计数器、堆栈指示器、
指令寄存器与译码器等,指令集包括 78条指令。
第 1章 基 础 知 识
1978年推出的 8086是一种 16位的微处理器,它的内部结构是 16位的,数据总线也是 16位的。它有包括乘法与除法指令的
16位运算指令,既能处理 16位数据,也能处理 8位数据,在汇编语言上与 8080,8085兼容,并增加了多条 16位操作指令,有 20
根地址线,直接寻址能力可达 1 MB。 8088是 8086的简化产品,
它不是真正的 16位芯片,它的内部总线是 16位的,外部总线是 8
位的,是一种准 16位芯片。
第 1章 基 础 知 识
80186与 80188是另一种高集成度的 16/8位微处理芯片。它将
8086/8088与其他常用的 20多个器件集成在一块芯片上,同时增加了 I/O(输入 /输出 )指令,寻址空间仍为 1 MB,可以使用数值协处理器 80187,但没有存储管理与保护部分。
1982年推出的 80286是真正的 16位、具有存储管理与保护机制的微处理器芯片,它有实地址模式和虚拟地址保护模式两种运行方式。虚拟地址保护模式也称作保护模式。在实地址模式中,80286兼容了 8086的全部功能,8086的汇编语言源程序可以不做任何修改在 80286中运行。在保护模式中,它将实地址模式的能力与对存储器的管理,对虚拟存储器的支持,以及对地址空间的保护集为一体,因而能可靠地支持多用户系统。
第 1章 基 础 知 识
1985年推出了高性能 32位微处理器 80386,它与 8086、
80286相兼容,这标志着 32位微处理时代的到来。继 80386之后,
Intel公司于 1989年又推出了 80486微处理器; 1993年又推出了更高性能的微处理器 ——Pentium。目前,Pentium系列的微处理器已形成 PentiumⅠ,PentiumⅡ,PentiumⅢ,PentiumⅣ 四个系列多种型号的产品。
第 1章 基 础 知 识
1.1.4 Intel微处理器的性能
1,80386,80486和 Pentium的主要技术特点
80386是 Intel公司为支持多任务操作,适应多种操作系统而设计的 32位微处理器。由于 80386有 32位的寄存器和数据通路,
因此,可以支持 32位的地址与数据类型。 80386能够支持 4 GB的内存物理空间,64 TB的虚拟存储空间;支持多任务系统;支持段式管理与页式管理;支持四级特权集,对任务与任务之间、
任务与操作系统之间进行严格的保护隔离。由于采用指令流水线工作方式、较高的总线带宽、片内地址转移等措施,系统速度可以达到 4 MIPS。
第 1章 基 础 知 识
80486芯片相当于将 80386与一片数值协处理器 80387、一片
8 KB的高速缓冲存储器 Cache集成在一起,其中 8 KB Cache用来存放指令与数据。由于访问内部 Cache的速度远高于访问存储器的速度,因而可以大大提高系统性能,减少了处理器使用外部总线的时间,对内部 Cache的操作完全由系统自动进行,对用户是透明的。 80486的常用指令运行时间为 1个时钟周期,系统速度可达 20 MIPS。
1992年,Intel公司正式将继 80486之后新一代微处理器称为
Pentium。 Intel不采用 80586这一提法的原因主要有两点:一是商标的版权问题;二是说明 Intel的微处理器设计由 CISC技术向
RISC技术过渡。出于商业原因,Intel在产品宣传中不突出 RISC
技术,而只用“超标量”,即 Pentium采用双流水线超标量体系结构。
第 1章 基 础 知 识
Pentium的内部总线是 32位,但与外部存储器的接口总线是
64位,因而处理器与存储器之间数据传输速率达 528 MB/s,它的软件与 80386,80486兼容。其主要特点是:指令 Cache与数据
Cache分开,容量均为 8 KB;硬件上,两个整数执行流水线分开,
地址产生部件与算术逻辑单元 ALU分开;可以在一个运行周期中发送两条整数指令;具有片上浮点寄存器、加法与乘 /除法器;
可以在一个运行周期发送一条或两条浮点指令;采用转移预测方法,使用两个预取缓冲器,一个以顺序方式预取指令,一个按转移预测设置的转移目标缓存 BTB预取指令,所需指令永远是在执行前预先取出的。 Pentium的片上存储管理部件与 80386、
80486完全兼容。
第 1章 基 础 知 识
Pentium支持多用户操作系统,可以在 Windows NT,OS/2、
UNIX,Solaris操作系统中运行,可用于局域网 client/server、虚拟实景、文字与语音识别、三维模型运算等更为广泛的应用领域。
第 1章 基 础 知 识
2,80386,80486和 Pentium微处理器的性能比较
80386有 32位的寄存器和数据通道,支持 32位的地址和数据类型,是为支持多任务操作而进行优化的操作系统所设计的
32位微处理器。与 80386一样,80486也使用了指令流水线、
RISC的设计思想。 80486用静态 RAM作为指令、数据共用的
Cache,它采用成组传送方式,能在一个时钟周期内传送 32位数据。 80486的性能高于 80386。
从 8086到 80386,再到 80486直至 Pentium,可以看出 Intel微处理器的发展趋势和特点:
第 1章 基 础 知 识
① 遵循开放式标准,保持兼容性;
② 结构设计从 CISC向 RISC过渡;
③ 功能升级,扩大应用范围;
④ 提高基于 Intel微处理器的微型机性能,保持整机的兼容性。
现在,微型机的应用已从简单的数值计算、文字处理向多媒体、局域网、工程 CAD、模式识别中的文字与语音识别、专家系统以及以图形界面为特征的立体图形与动态视频图像处理等方向发展。将多个中央处理器、高速数字运算单元及“智能”人机界面综合起来,以适应动态全景视频图像处理和语音与文字识别技术的要求。
第 1章 基 础 知 识
1.2 汇编语言程序设计
1.2.1 程序设计语言程序是为解决某一问题而编写在一起的指令序列,计算机程序可以用高级语言编写,也可以用汇编语言编写。
指令是规定计算机执行特定操作的命令。 CPU就是根据指令来指挥和控制微型机各部分协调地动作,以完成规定的操作。
任何一条指令都包括两部分:操作码和地址码。操作码指明要完成操作的性质,如加、减、乘、除、数据传送、移位等;地址码指明参加上述规定操作的数据存放地址或操作数。计算机全部指令的集合称为计算机指令系统,指令系统准确定义了计算机的处理能力。
第 1章 基 础 知 识高级语言程序就是用高级语言编写的程序。如 C语言源程序、
PASCAL语言源程序等均是高级语言程序。计算机是不能直接运行高级语言源程序的,要执行高级语言源程序,就必须把用高级语言编写的源程序翻译成用机器指令表示的目标程序,这样就需要有各种解释程序或编译程序。
第 1章 基 础 知 识在计算机中,以二进制代码形式存在的指令,叫机器码指令。机器码指令构成的指令系统叫机器语言,用机器语言编写的程序叫机器语言程序。用助记符构成的指令系统叫汇编语言
(Assemble Language),用汇编语言编写的程序叫汇编语言程序。
汇编语言程序翻译成机器语言程序的过程称为汇编 (Assemble),
高级语言程序翻译成机器语言程序的过程叫解释 (Interpretation)
或编译 (Compilation)。
通常将汇编、解释、编译前的程序叫源程序,而将翻译后的机器语言程序叫目标程序。完成汇编、解释、编译的程序则分别称为汇编程序 (Assembler)、解释程序 (Interpreter)、编译程序
(Compiler)。
第 1章 基 础 知 识
1.2.2 汇编语言我们知道,计算机系统由计算机硬件和计算机软件两个部分组成,有时又将计算机的硬件与软件统称为计算机资源。
计算机的硬件是指构成计算机系统的物理实体或物理装置。
由运算器、控制器、存储器、输入 /输出接口等部件构成主机,
称为计算机。主机再配以输入 /输出设备,便构成了计算机的硬件系统。
第 1章 基 础 知 识计算机软件系统是指计算机系统所使用的各种程序的集合。
它的功能是利用计算机提供的逻辑功能来合理地组织计算机的工作,以便简化人们使用计算机的环节,并为用户提供一个便于掌握、操作简便的工作环境。计算机软件通常包括:操作系统、数据库系统、计算机网络软件、汇编程序、各种高级语言的编译或解释程序、各种标准程序库、各种应用程序等。作为计算机重要组成部分的软件系统,汇编语言在其中占有重要的地位。汇编语言程序设计是计算机专业人员的基本功。那么,
什么是汇编语言及汇编语言程序设计?与高级语言相比,汇编语言又有什么特点?如何学习汇编语言及如何使用汇编语言进行程序设计呢?
第 1章 基 础 知 识汇编语言 (Assembler Language)是一种面向机器的程序设计语言,这是一种用符号表示的低级程序语言,通常是为特定的计算机专门设计的,与机器语言很接近。用这种语言写成的程序,需经过汇编程序翻译成机器语言程序才能被计算机执行。
汇编语言指令和翻译成的机器语言之间的关系,基本上是一一对应的关系。但有的汇编语言中可以有宏指令,它与一串特定的机器指令相对应 (对应方式由用户按一定规则自行定义 ),这样的汇编语言有时也叫宏汇编语言。由此可看出,汇编语言是一种与计算机的代码机器指令一一对应,并紧密依赖于某一具体计算机的、面向机器的语言。
第 1章 基 础 知 识机器语言是利用 0,1的各种组合来构成指令的,采用的是二进制编码。没有配备任何软件的计算机称之为裸机,它只能识别,0‖和,1‖两种代码。为了使用这样的计算机,程序设计人员只能用机器指令或机器语言编写程序,这就要求程序设计人员熟记计算机以,0‖、,1‖表示的全部指令,这是十分困难的事情。用机器语言编写程序时,工作量大,易于出错且不易修改。为了摆脱用机器指令编程的困难,出现了用指令符号来编写程序的方法,用符号语言编写的程序称为符号程序。在编制程序时,只要记住指令的助记符就可以了,而助记符可使用指令的英文名称的缩写,较指令编码容易记忆。例如,取数指令用 LDA表示、加法指令用 ADD表示等。对这种符号语言再作一些扩充就是所谓的汇编语言。机器语言与汇编语言的比较见表 1-1。
第 1章 基 础 知 识这里有一个问题:汇编语言程序为人们编写程序、阅读和交流程序都带来了方便,但机器只认识用机器语言编写的目标程序,即 0,1代码,换句话说,机器根本就识别不了汇编语言程序。为了让机器能识别人们用汇编语言编写的程序,在计算机执行每条汇编指令之前,必须将其先翻译成机器语言的目标程序。完成这一功能的程序就是前面提及的汇编程序。
第 1章 基 础 知 识汇编程序的主要功能是把用汇编语言编写的源程序加工成机器语言写的目标程序。汇编过程有以下三步:
① 用汇编语言编写出源程序;
② 将源程序输入到计算机内,由汇编程序把它加工成计算机能执行的目标程序;
③ 执行目标程序,得到计算结果。
第 1章 基 础 知 识表 1-1 机器语言与汇编语言的比较机 器 语 言 程 序地 址 码 指令代码
101 020106
102 024107
103 107000
104 044110
105 063077
106 X
107 Y
110 Z
第 1章 基 础 知 识汇 编 语 言 程 序地 址 符 号 指 令 符 号 注 释
·LOC 101 定位伪指令,程序从 101号地址开始存放
START,LDA 0,CNO1; X→L 0
LDA 1,CNO2; Y→L 1
ADD 0,1; X+Y→L 1
STA 1,CNO3; Z= X+Y→(CNO 3)
HALT; 停机
CNO1,X; 原始数据
CNO2,Y; 原始数据
CNO3,Z; 计算结果
·END 程序汇编结束表 1-1 机器语言与汇编语言的比较第 1章 基 础 知 识其中,源程序是由一串符号化的指令组成,当汇编程序加工源程序时,总是从头到尾,一个符号接着一个符号的阅读,
称为扫描源程序。从头到尾扫描一次源程序为扫描一遍,一般汇编程序是扫描两遍源程序。第一遍扫描把源程序中所有出现的名字进行造表,确定每个名字将占用的内存位置;第二遍扫描时,按所造出的表,把每条符号化指令变换成数码形式的机器指令。
第 1章 基 础 知 识除此之外,汇编程序还具有查错、修改、打印等功能。当用户编写的汇编语言程序不符合汇编语言所要求的书写格式和语法要求时,汇编程序就会指出源程序的某个位置出了什么性质的错误等,这就是汇编程序的查错功能。汇编程序提供修改源程序的方法简便,用户把修改的要求提供给汇编程序,由汇编程序实现对源程序的自动修改。在汇编过程中,当发现错误时,将错误信息打印出来,必要时可打印出名字表及目标程序,
还可打印出修改后源程序的文本等。
第 1章 基 础 知 识实用的汇编语言中,还包括一些用户编程时十分需要的指令,
这些指令并无对应的机器指令,这些指令称为伪指令。
众所周知,用高级语言编写的程序,机器是不能直接执行的,
需要由编译程序或解释程序将它翻译成对应的机器语言,计算机才能接受并执行。通过编译或解释程序生成的机器语言程序往往比较冗长,占用存储空间较大,执行速度慢。用高级语言编写程序时,程序员无法直接利用机器硬件系统的许多特性,如寄存器、
标志位以及一些特殊指令等,影响许多程序设计技巧的发挥。而汇编语言程序是直接利用机器提供的指令系统编写程序的,与机器语言程序一一对应,所以占用存储空间少,执行速度快,特别是在一些有实时控制要求的场合,与使用汇编语言相比,使用高级语言就不那么方便了,二者的区别主要表现在以下几个方面:
第 1章 基 础 知 识
(1) 与汇编语言程序相比,高级语言程序要多占用 0.5~ 1倍的存储单元,执行程序花费的时间要长 0.5~ 2倍。
(2) 汇编语言可直接使用输入 /输出指令通过低级接口与外设打交道,而高级语言就不那么方便了。
第 1章 基 础 知 识使用汇编语言编写程序,能充分发挥机器硬件的作用,高效地使用机器。汇编语言是编写计算机通用软件的基础。一般来说,某些对执行时间和存储容量有较高要求的程序,通常使用汇编语言来编制,汇编语言的应用场合是:
● 计算机控制系统 (包括实时控制系统 );
● 计算机检测系统;
● 外设驱动程序;
● 智能化仪器仪表;
● 高性能软件等。
第 1章 基 础 知 识
1.2.3 学习汇编语言的方法由于汇编语言是面向机器的语言,是与机器密切相关的一种程序设计语言。所以要掌握汇编语言,使用汇编语言进行程序设计时,就必须对机器的一些特性有所了解,这样才能编出正确的汇编语言程序。概括起来,应了解的机器特性有:
(1) 微处理器的结构 (如 8086/8088,80386,80486或 Pentium
等 ),存储器的组织方式、存储器的基本单元即编址的基本单位、
容量即基本单元的数量是多少。该机存储器的基本单元是什么?
是字节还是字、双字等。以相邻字节为单位进行操作的单元有哪些种类? 例如,字、半字、双字等。其字长是多少? 存储容量多大? 地址表示的方法及地址变换机构又是怎样的?是否支持虚拟存储器等。
第 1章 基 础 知 识
(2) 控制器的功能及相互关系。如,通用寄存器 (包括累加器 )的数量、功能、标志位的内容及使用等。
(3) 数据类型及格式。该机器能处理哪些类型的数据?例如,定点数、浮点数、十进制数、字符数据的格式是什么样的?
每种数据在机器内的表示方法 (即机内格式 )又是怎样的?
(4) 指令格式、长度、功能及寻址方式。对机器指令系统的深入了解是汇编语言程序设计的重要任务之一,它包括:指令格式和长度、寻址方式、指令的种类、每一条指令的功能,
如何使用这些指令进行程序设计。
第 1章 基 础 知 识
(5) 控制器的其他特性。汇编语言程序设计要了解算术逻辑部件和控制器的状态、中断、时钟等。应了解哪些中断与程序设计有关? 中断时的现场保护在什么地方? 如何屏蔽与开放中断?
等等。
(6) 外部设备的特性。外设是计算机与外部世界进行交换信息的手段。进行汇编语言程序设计时,必须了解有哪些外部设备可供使用;每种外设的具体使用方法如何 (包括信息交换的机构和交换方式 );如何使外设与算术逻辑部件和控制器协调工作
(包括速度匹配 );有无通道设施;如何组织通道程序等。
第 1章 基 础 知 识
(7) 指令系统,DOS和 BIOS的调用方法。
使用汇编语言编制汇编语言程序应注意以下几点:
(1) 要有一个好的算法。所选定的算法必须结构清晰、层次分明、逻辑正确无误。算法描述形式应该简洁明了,对于数据结构不太复杂的中小程序,可采用流程图的形式,否则应使用类 C语言、类 PASCAL语言或类似的简化语言描述。
(2) 程序要模块化。根据解决的任务划分功能模块,每个模块功能单一,入口、出口简单。这样,程序容易编制、调试,
也容易修改和扩充。
第 1章 基 础 知 识
(3) 对指令的使用要有选择。在编制程序时,能用简单和常用指令的,决不用复杂和不常用的指令。使用后一类指令虽然在一定程度上能显示程序员对指令系统的理解程度和驾驭能力,
但却增加了调试和阅读程序的困难。比较起来,朴实无华的程序较容易保证其正确性,也易于维护。
(4) 要充分利用寄存器。汇编语言的优点之一就是能充分利用机器资源。在编制程序时,应充分利用汇编语言的这个长处,
合理使用寄存器,尽量使操作在寄存器或寄存器之间进行,减少访问内存单元次数,以便节省时间,提高效率。
第 1章 基 础 知 识
(5) 数据与指令的使用要正确。数据存储单元和工作单元应集中放在一起,并且与可执行指令分开,这样可使程序结构清晰,便于阅读,也便于修改。
(6) 不应编写自我修改的程序。程序的可执行指令代码在程序执行过程中应保持不变,那种在程序执行过程中,自身修改某些指令代码以获得某些效果的做法早已被摒弃,否则会给程序的调试带来极大的困难。
第 1章 基 础 知 识
(7) 要有简明而充分的注释。注释应成为程序中必不可少的部分,注释不光是解释指令意义,而应着重描述指令在程序中所起的作用。写注释并不增加程序的篇幅。注释对程序的运行虽然不起作用,但对程序的调试、修改、阅读和交流乃至测试、
维护等都有着重要影响。
第 1章 基 础 知 识
1.3 数据表示方法
1.3.1 数与数制数制是指用一组固定的数字符号和统一的规则表示数的方法。
基数和权是数制要涉及到的两个基本概念。数制中,每个数位 (数字位置 )所用到的不同数字的个数叫做基数。常用的十进制,是采用 0~ 9这 10个数字表示的,它的基数是 10。在一个数中,数字在不同的数位所代表的数值是不同的,每个数字所表示的数值等于它本身乘以与所在数位有关的常数,通常称这个常数为位权,简称权。例如,十进制数个位的位权是 1,十位的位权是 10,百位的位权是 100,千位的位权是 1000等。相邻两位权的比值就等于基数。一个数的数值大小就等于它的各位数码乘以相应位权的总和。
第 1章 基 础 知 识
1.数制计算机常用的数制有二进制、八进制、十进制、十六进制。
1) 十进制由十个数字 0~ 9组成,基数为 10,小数点左边从右至左其各位的位权依次是,100,101,102,103,… ;小数点右边从左至右其各位的位权依次是,l0-1,10-2,10-3,… 。例如,十进制数
678.5可以表示为
678.5= 6× 102+7× 101+8× 100+5× 10-1
第 1章 基 础 知 识十进制数字的表示方法是在 0~ 9数字序列后可跟一个字母
D或不跟 D,例如,128D或 128。十进制实数的表示分为底数与指数两部分,正号,+‖可有可无,指数部分写在 E之后,若省略
E,则底数部分应有小数点。例如,1E-32,3.1415。
第 1章 基 础 知 识
2) 二进制由数字 0和 1组成,基数为 2。小数点左边从右至左其各位的位权依次是,20,21,22,… ;小数点右边从左至右其各位的位权依次是,2-1,2-2,2-3,… 。表示方法是在 0,1序列后跟一个字母 B,例如,110B,1100011B。
3) 八进制计算机中经常使用的八进制和十六进制可用于解决二进制数书写长且不易阅读的问题。八进制数由 0~ 7共 8个数字组成,
基数为 8,小数点左边从右至左其各位的位权依次是,80,81,
82,… ;小数点右边从左至右其各位的位权依次是,8-1,8-2,
8-3,… 。表示方法是在 0~ 7组成的数后跟一个字母 O或 Q。例如,
1477O或 1477Q。
第 1章 基 础 知 识
4) 十六进制由 16个数字符号 (数字 0~ 9、符号 A,B,C,D,E,F)组成,
16为基数。小数点左边从右至左其各位的位权依次是,160,
161,162,… ;小数点右边从左至右其各位的位权依次是,16-1,
16-2,16-3,… 。表示方法是在 0~ 9的数字或 A~ E的字母序列之后跟一个字母 H,但必须以数字打头,例如,40490EH、
0C0000H。
第 1章 基 础 知 识
2.数制的转换
1) 十六进制数转换为二进制数不论是十六进制的整数或小数,只要把每一位十六进制的数用相应的 4位二进制数代替,就可以转换为二进制数。
例 1-1 将 (3AB)16转换为二进制数。
3 A B
│ │ │
0011 1010 1011
(3AB)16= (0011 1010 1011)2= (11 1010 1011)2
第 1章 基 础 知 识例 1-2 将 (0.7A53)16转换为二进制数。
7 A 5 3
│ │ │ │
0111 1010 0101 0011
(0.7A53)16= (0.0111 1010 0101 0011)2
第 1章 基 础 知 识
2) 二进制数转换为十六进制数二进制的整数部分由小数点向左,每 4位一分,最前面不足
4位的在前面补 0;小数部分由小数点向右,每 4位一分,最后不足 4位的后面补 0。然后把每 4位二进制数用相应的十六进制数代替,即可转换为十六进制数。
例 1-3 将 (1101111100011.100101111)2转换为十六进制数。
0001 1011 1110 0011.1001 0111 1000
│ │ │ │ │ │ │
1 B E 3 9 7 8
(1101111100011.100101111)2 = (1BE3.978)16
第 1章 基 础 知 识总之,数在机器中是用二进制表示的,但是,一个二进制数书写起来太长,且容易出错。大部分微型机的字长是 4位,8
位,16位或 32位的,都是 4的整数倍,在书写时用十六进制来表示。一个字节就可以用两位十六进制数表示,两个字节可以用 4位十六进制表示,书写、阅读方便且不容易出错。
第 1章 基 础 知 识
1.3.2 计算机中的数据表示计算机只能识别二进制数,因此数、字符等在计算机中都是使用二进制形式表示的。数可以分为带符号数和无符号数。
1.带符号数的表示法
1) 机器数与真值上面提到的二进制数,没有提到符号问题,故是一种无符号数的表示。数总有正负之分,那么符号在计算机中又是如何表示的呢?机器中通常用一个数的最高位表示符号位。字长为 8
位的数,用最高位 D7表示符号位,余下的 7位 D6~ D0为数字位,
符号位为,0‖表示正,为,1‖表示负。如:
第 1章 基 础 知 识
X= (0101 1011)2=+ 91
而 X= (1101 1011)2=- 91
这样连同一个符号位在一起的一个数,称为机器数,它的数值称为机器数的真值。
为了运算方便,即统一加减运算,机器中的负数有 3种表示法 ——原码、反码和补码。
第 1章 基 础 知 识
2) 原码若正数的符号位用,0‖表示,负数的符号位用,1‖表示,
这种表示法就称为原码。
X=+ 105,[X]= 0 1101001
X=- 105,[X]= 1 1101001
│ │
符号位 数值第 1章 基 础 知 识其中,字长为 8位的数,其最高位为符号位,后面 7位是数值;若字长为 16位,则后面的 15位是数值。用原码表示时,+
105和- 105它们的数值位相同,而符号位不同。
原码表示简单易懂,与真值的转换方便。但是,两个异号数相加或两个同号数相减,就要做减法,难以实现加减法的统一。反码和补码的引进,就是为了把减法运算转换为加法运算。
第 1章 基 础 知 识
3) 反码正数的反码表示与原码相同,最高位为符号位,,0‖表示正,其余位为数值位。如:
[(+4)]反 = 00000100
│ │
符号位 二进制数值
[(+31)]反 = 00011111
│ │
符号位 二进制数值
[(+127)]反 = 01111111
│ │
符号位 二进制数值第 1章 基 础 知 识而负数的反码是它的正数连同符号位按位取反而形成的。如:
[(+4)]反 = 0 0000100,[(-4)]反 = 1 1111011
[(+31)]反 = 0 0011111,[(-31)]反 = 1 1100000
[(+127)]反 = 0 1111111,[(-127)]反 = 1 0000000
[(+0)]反 = 0 0000000,[(-0)]反 = 1 1111111
第 1章 基 础 知 识负数反码的表示与原码表示有很大的区别:最高位仍为符号位,,0‖表示正数,,1‖表示负数,但数值位就不同了。如:
[(-127)]反 = 1 0000000
│ │
符号位 取反=数值
8位二进制数的反码表示如表 1-2所示。
第 1章 基 础 知 识表 1-2 原码、补码和反码对照表
进制数码表示 无符号二进制数 原 码 补 码 反 码
00000000 0 +0 +0 +0
00000001 1 +1 +1 +1
00000010 2 +2 +2 +2
01111100 124 +124 +124 +124
01111101 125 +125 +125 +125
01111110 126 +126 +126 +126
01111111 127 +127 +127 +127
10000000 128 -0 -128 -127
10000001 129 -1 -127 -126
10000010 130 -2 -126 -125
11111100 252 -124 -4 -3
11111101 253 -125 -3 -2
11111110 254 -126 -2 -1
11111111 255 -127 -1 -0
第 1章 基 础 知 识反码的特点有以下 3点:
(1) ―0‖有两种表示法。
(2) 8位二进制反码所能表示的数值范围为 -127~ +127。
第 1章 基 础 知 识
(3) 当一个带符号数由反码表示时,最高位为符号位 。 当符号位为 0(即正数 )时,后面的七位为数值部分;当符号位为 1(即负数 )时,后面几位表示的不是此负数的数值,一定要把它们按位取反,才能得到它的数值 。 例如,一个反码表示的数为
10010100
这是一个负数,它不表示 (- 20)10,而表示的是
- 1101011=- (l× 26+ l× 25+ l× 23+ l× 21+ 1)
=- (64+ 32+ 8+ 3)= (- 107)10
第 1章 基 础 知 识
4) 补码正数的补码表示与原码相同,即最高位为符号位,,0‖表示正数,其余位为数值 。 如:
[(+4)]补 = 00000100
│ │
符号位 二进制数值
[(+31)]补 = 00011111
│ │
符号位?二进制数值
[(+127)]补 = 01111111
│ │
符号位 二进制数值第 1章 基 础 知 识负数的补码是先求其反码,再在最后位 (即最低位 )加 1。如:
[(+4)]原 = 00000100,[(-4)]反 = 11111011,[(-4)]补 = 11111100,
[(+31)]原 = 00011111,[(-31)]反 = 11100000,[(-31)]补 = 11100001,
[(+127)]原 = 01111111,[(-127)]反 = 10000000,[(-127)]补 = 10000001,
[(+0)]原 = 00000000,[(-0)]反 = 11111111,[(-0)]补 = 00000000
第 1章 基 础 知 识
8位带符号位的补码表示如表 1-2所示,有以下特点:
(1)?[+0]补 = [-0]补 = 00000000。
(2)?8位二进制补码所能表示的数值为 -128~ +127。
(3) 一个用补码表示的二进制数,最高位为符号位,当符号位为,0‖(即正数 )时,其余七位即为此数的二进制值;当符号位为,1‖(即负数 )时,其余几位不是此数的数值,其数值获取的方法是将其按位取反,并在最低位加 1。
第 1章 基 础 知 识例 1-4 [X]补 = 10010100,它不等于 (- 20)10,它的数值为由
0010100按位取反得 1101011,然后再加 l为 1101100。 即
X=- 1101100=- (1× 26+ 1× 25+ 1× 23+ 1× 22 )
=- (64+ 32+ 8+ 4)= (- 108)10
当负数采用补码表示时,就可以把减法转换为加法。
第 1章 基 础 知 识例 1-5 X= 64- 10= 64+ (- 10)
[X]补 = [64]补 + [- 10]补
+ 64= [64]补 = 01000000
+ 10= 00001010
[- 10]补 = 11110110
于是 01000000 01000000
- 00001010 + 11110110
00110110 100110110

自然丢失由于在字长为 8位的机器中,第 7位(即 D7)的进位是自然丢失的,故做减法与补码相加的结果是相同的。
第 1章 基 础 知 识例 1-6 34- 68= 34+ (- 68)
[+34]补 = 00100010
[+68]补 = 01000100
[-68]补 = 10111100
于是
00100010
+ 10111100
11011110
即为和的补码,符号位为 1,和为负数,数值部分应由后七位按位取反再加 1,即为 0100010。所以,和为 (- 34)10?。
第 1章 基 础 知 识在日常生活中,有不少,补,数的例子 。 就以校对时间来讲,
若标准时间为 6点整,而现在有一只表为 10点,要拨到 6点,可以有两种拨法:
第一种方法倒拨:
10- 4= 6
第二种方法顺拨:
10+ 8= 6
所以,在这里,10加 8与 10减 4(或加 (- 4))是相同的 。 这当然是有条件的,在钟表中
10+ 8= 12+ 6
第 1章 基 础 知 识而 12称为模,即一个系统的量程或此系统所能表示的最大的数,它是自然丢掉的,如:
10- 4= 10+ 8 (mod l2)
表示的是,等号两边同除以 12,它们的余数相同,12称为模,
或称 (10- 4)与 (10+ 8)对模 12是同余的,也即 (+ 8)与 (- 4)对模 12
互为补数 。
一般说来,若数 Z,Y,K满足下列关系:
Z= nK+ Y (n为整数 )
则称 Z与 Y对模 K是同余的,记为
Z≡Y (mod K)
第 1章 基 础 知 识在上面的例子中,K= 12。因此 (- 4)与+ 8,(- 5)与+ 7,
(- 6)与+ 6等对于模 12都是同余的,也即它们对模 12来说互为补数。
由上述的例子和同余的概念,不难得出结论:对于某一确定的模,某数减去小于模的一个数,总可以用加上该数的负数与其模数之和 (即补数 )来代替。所以,引进了补码以后,减法就可以转换为加法了,使加减法运算可以统一。
第 1章 基 础 知 识把减法转换为加法实际上是利用了补码的概念,所有的负数 (- X)的补码都可由模
28- X来得到。但是,利用把正数连符号位按位取反再加 1
这样的简便方法,避免了求补码过程中的减法,使 2的补码的运算具有实用价值。因此,在微型机中,凡是带符号数一律是用补码表示的,这样,运算的结果也是用补码表示的。
由于计算机的字长是有一定限制的,所以一个带符号数有一定的范围。字长为 8位用补码表示时其范围为:- 128~+ 127。
当运算的结果超出这个表达范围时,就不正确了,这种情况称为溢出。这时,数就要用多字节 (如 16,24位等 )来表示。
第 1章 基 础 知 识
2.无符号整数机器数的表示方法就是把数的符号数码化了,它既能表示数的绝对值又能表示数的符号。如果把所有有效位都用于表示数的绝对值而不保留符号位 (即所有数位都是有效数字 ),则用这种方法表示的数叫做无符号数,计算机中有时需要无符号数形式。例如,地址用无符号整数表示。
第 1章 基 础 知 识
3.字符编码在计算机中,数字是用二进制表示的。而计算机处理的对象又不仅仅是数字,还包括各种字符,如大小写英文字母、标点符号、运算符号等等。为了使计算机能识别和处理它们,这些字符应如何表示呢? 由于计算机中的基本物理器件是具有两个状态的器件,所以各种字符只能按特定的规则用若干位二进制码的组合来表示。编码可以有各种方式,目前,在计算机中字符编码普遍采用的是 ASCII码 (American Standard Code for Information
Interchange,美国标准信息交换码 )。 ASCII码现已被国际标准化组织 (ISO)接收为国际标准。 ASCII码有 7位版本和 8位版本两种,
国际上通用的 ASCII码是 7位版本。它包含 10个阿拉伯数字,52个英文大小写字母,32个标点符号和运算符,34个控制码,共 128
个字符,所以可用 7位二进制数表示。 7位 ASCII码见表 1-3。
第 1章 基 础 知 识要确定一个数字、字母、符号或控制字符的 ASCII码,可在表中先找出它的位置,然后找出它所对应的十进制值或十六进制值。例如,小写字母,a‖的 ASCII码其十进制值是 97,十六进制值是 61H,转换成二进制值是 0110000lB。大写字母 A~ Z的
ASCII码是 41H~ 5AH,小写字母 a~ z的 ASCII码是 61H~ 7AH。
数字 0~ 9的 ASCII码值用十进制数表示是 48~ 57,用十六进制数表示是 30H~ 39H。在微型计算机中,要输出的十进制数必须用
ASCII码表示,例如,要想在显示器上显示 9,应使用其对应的
ASCII码,即 39H。
第 1章 基 础 知 识表 1-3 ASCII码表十进制 十六进制值 字符
000~ 007 00~ 07 NUL SOH
008~ 015 08~ 0F BS HT
016~ 023 10~ 17 DLE DC1
024~ 031 18~ 1F CAN EM
032~ 039 20~ 27 SP !
040~ 047 28~ 2F ( )
048~ 055 30~ 37 0 1
056~ 063 38~ 3F 8 9
064~ 071 40~ 47 @ A
072~ 079 48~ 4F H I
080~ 087 50~ 57 P Q
088~ 095 58~ 5F X Y
096~ 103 60~ 67 ` a
104~ 111 68~ 6F h i
112~ 119 70~ 77 p q
120~ 127 78~ 7F x y
第 1章 基 础 知 识
STX ETX EOT ENQ ACK BEL
LF VT FF CR SO SI
DC2 DC3 DC4 NAK SYN ETB
SUB ESC FS GS RS US
― # $ % &?
* +,-,/
2 3 4 5 6 7
,; < = >?
B C D E F G
J K L M N O
R S T U V W
Z [ \ ] ^ _
b c d e f g
j k l m n o
r s t u b w
z { | } ~ DEL
注,NUL,BEL,LF,FF,CR,DEL等是控制字符,NUL表示空,BEL是告警符,BS是退格符,LF是换行符,FF是换页符,CR是回车符,SP是空格符,
DEL是删除符。
第 1章 基 础 知 识
1.3.3 数据类型
1.基本的数据类型基本的数据类型是字节、字与双字。字节是任何逻辑地址的
8位相邻位串。位标号为 0~ 7,位 0为最低有效位。字是在任何字节地址开始的两个相邻的字节,低字节地址为该字的地址。
双字是任何字节地址开始的两个相邻字,其中每个字节都有自己的地址,最小字节地址就是双字的地址。
第 1章 基 础 知 识为了达到数据结构的最大灵活性并且能最有效地利用内存空间,字不必定界于偶数地址,双字也不一定定界于被 4整除的地址,即允许不按整数边界对齐。但是当使用有 32位总线的系统配置时,处理器与存储器之间数据传输的最大宽度为双字。
对于对齐的双字可以一次传送,而未对齐的双字则需 2~ 3次传送。为了获得最佳的性能,可将字操作对齐于偶地址,双字操作对齐于能被 4整除的地址。
第 1章 基 础 知 识
2.其他数据类型
(1) 整数为包含在一个 32位双字,16位字,8位字节中的带符号二进制数。符号位位于数据单元的最高位。正数和零的符号位为 0;负数的符号位为 1。
(2) 序数为包含在 32位双字,16位字,8位字节中的无符号二进制数。确定序数大小时要考虑所有的位。
(3) 非组合的 BCD码是用一个字节只表示一位 0~ 9的十进制数,这些数作为无符号字节值存放,数的大小由低半字节确定,
对于乘法与除法,高半字节必须为零。
第 1章 基 础 知 识
(4) 组合的 BCD码是用一个字节来表示两个十进制数 (0~ 9),
每半个字节保存一个 0~ 9的数字。
(5) 位域是一个相邻的位序列。该序列中的每一位作为一个独立的单位看待,一个位域可以从任何字节的任何位置开始,
最长可达 32位。
(6) 串是由一个字节、字或双字组成的连续序列。串的长度可以从 1B扩展到 4 GB。
(7) 指针是 48位的,逻辑指针是由一个 16位的段选择器与一个 32位的偏移值组成,又称为全指针。
第 1章 基 础 知 识
(8) 偏移量是以某一个存储单元作基准的 16位或 32位量。
(9) 字符表示一个 ASCII字母、数字或控制字节。
(10) 浮点数是由 FPU支持的一类数据,有单精度 (32位 )、双精度 (64位 )和扩展精度 (80位 )三种形式。数据格式基于 IEEE754
标准,即将每个浮点数分为三个字段:符号位、有效数和阶码即指数幂,如图 1-1所示。从图中可看出:
第 1章 基 础 知 识
① 单精度浮点数包括 1位符号,8位阶码,24位有效数,即显式 23位,外加 1位隐含的整数,1.‖。
② 双精度浮点数包括 1位符号,11位阶码,53位有效数,
即显式 52位,外加 1位隐含的整数,1.‖。
③ 扩展精度浮点数包括 1位符号,15位阶码,64位有效数,
即内含 1位整数,1‖,小数点,.‖是隐含的。
第 1章 基 础 知 识图 1-1 浮点数格式符号位 阶码 有效数
1.
31 30 23 22
符号位 阶码 有效数
1.
63 62 52 51
符号位 阶码 有效数1
79 78 64 63
单精度数双精度数扩展精度数
.
第 1章 基 础 知 识
1.4 结果的输出与打印
1.显示 (或打印 )单个字符结果的显示或打印,可使用 DOS功能调用 02号功能来实现。
方法是把要显示字符的 ASCII码送入 DL寄存器,功能调用号 02H
送入 AH寄存器,通过指令 INT 21H即可实现结果的显示与打印。
例 1-7 若显示字符是‘?’,程序段描述如下:
MOV DL,'? '
MOV AH,02H
INT 21H
?’字符原先放在何处 (寄存器或存储器 )并不重要,但一定要送到 DL寄存器中,才能显示。
如要在打印机上输出单个字符,则应使用 05号功能调用。
第 1章 基 础 知 识例 1-8 打印字符‘ 8‘,程序段描述如下:
MOV DL,'8'
MOV AH,05H
INT 21H
注意:当打印机与显示器同时开机时,上述任何一个调用功能均可同时在显示器上或打印机上显示和打印出该字符来。
通常可使用 02H号功能实现屏幕显示和打印机打印。
第 1章 基 础 知 识
2.显示字符串将在缓冲区中的字符串送屏幕显示或打印。可使用 9号功能调用。要显示的字符串应该存入由数据段所定义的缓冲区中,
且以‘ $‘字符为结束标志。使用该调用时,应将 DS,DX指向该缓冲区。
第 1章 基 础 知 识例 1-9
DATA SEGMENT
BUF DB 'HOW AREYOU! $'
DATA ENDS
CODE SEGMENT
ASSUME CS?CODE,DS?DATA
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AX,09H
INT 21H
CODE ENDS

第 1章 基 础 知 识说明:
(1) 要显示的结果不是字符串,而是一个数据 (如二进制数或十进制数等 ),显示器是不能直接显示的。此时要把二进制数转化为十进制数 (化为非压缩的十进制数 ),然后再把十进制数转为数字字符 (ASCII数字符 ),这时才能输出显示;
(2) 如果在字符串中,含有字符‘ $‘,显然不能直接输出,
此时要用 02H功能才能输出字符。即可使用循环输出单个字符的方法输出字符串;
(3) 当打印机处于联机状态时,使用 9号功能显示结果时,其结果也将在打印机上同时打印出来。
第 1章 基 础 知 识
3.键入单个字符可以利用 DOS功能调用 01号功能,直接从键盘上接收一个字符。该字符的 ASCII码将存放在 AL寄存器中,同时显示在屏幕上,该调用将等待用户在键盘上按下键后才退出。所以,要想输入一个键值,使用该功能时,最好先在屏幕上给出提示符,
以提示用户可以按下按键了,否则,很难把握合适的按键时刻。
第 1章 基 础 知 识例 1-10
MOV DL,'? ';用 '? ' 做屏幕提示,请求键入字符
MOV AH,02
INT 21H
MOV AH,01; 出现 '? ' 后,应该按下你要键入的键
INT 21H
实际使用中,提示符可以是一字符串。总之,使人感到提示含义清楚就可以了。该调用常常用来为程序提供可变数据,它允许用户根据需要通过键盘送入数据。
第 1章 基 础 知 识
4.键入字符串
10号功能调用,可以从键盘上输入一串字符,且在屏幕上显示出来。输入的字符串将存入输入缓冲区中,它通常被定义在数据段中。输入的字符串长度应小于缓冲区的长度。否则,
超过缓冲区长度的输入字符将被视为无效。输入字符时,应以回车符 (0DH)作结束符。使用该调用可输入成批的数据。
该调用的输入缓冲区应具有的结构是:第一个字节为缓冲区的长度;第二个字节为空字节,用来存放将来实际键入的字符数;最后一组字节,用来存放键入的字符串。该调用要求 DS:
DX应指向输入缓冲区的首地址。
第 1章 基 础 知 识例 1-11
DATA SEGMENT
KBUF DB 50 ; KBUF数据区的第一个字节用于定义输入缓冲区长度
DB? ; KBUF数据区的第二个字节用于存放实际输入字符数
DB 50 DUP(0) ; KBUF数据区的第三个字节用作字符串缓冲区
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA
MOV AX,DATA
第 1章 基 础 知 识
MOV DS,AX
LEA DX,KBUF ;指向输入缓冲区首址
MOV AH,10
INT 21H
CODE ENDS


第 1章 基 础 知 识习 题 一
1.1 将下列十进制数转换为二进制数和十六进制数。
(1) 369 (2) 4095
1.2 将下列二进制数转换为十六进制数和十进制数。
(1) 101101 (2) 1111111111111111
1.3 将下列十六进制数转换为二进制数和十进制数。
(1) FAH (2) 12D4H
第 1章 基 础 知 识
1.4 写出下列二进制数的补码表示。
(1) -00010011 (2) -00111100 (3) -0011001 (4) –01000000
1.5 写出下列字符串的 ASCII码。
For example