汇编语言学习--基础知识(一)

时间:2021-04-12 00:55:03

一、基础知识

1、数值数据表示

(1)二进制:数据后面紧跟一个字母B

(2)八进制:数据后面紧跟一个字母Q

(3)十进制:数据后面紧跟一个字母D

(4)十六进制:数据后面紧跟一个字母H,当十六进制数的第一个字符是字母时,在第一个字符之前必须添加一个‘0’。如:100H、56EFH、0FFH、0ABCDH等都是十六进制数。

(5)宏汇编MASM系统(待了解)

在宏汇编MASM系统中,程序员可用二种方法来处理源程序:命令行和集成环境。

(6)补码

补码的最高位用来表示正负数:0—正数,1—负数。正数的补码是其自身的二进制形式,负数的补码是把其正数的二进制编码变“反”,再加1而得。

(7)二进制数的符号扩展

在汇编语言中,我们经常要对字/字节的数据进行操作。当把“字节”转换成“字”,或“字”转换成“双字”时,就需要进行符号扩展(正数补0,负数补1)。符号扩展的具体操作就是把已知信息的最高位扩展到所有更高位。

例1.1 把8位补码01011010、10101100分别扩展成16位补码。

解:根据符号扩展的含义,“字节→字”的具体扩展结果如下:

 

01011010

 

10101100

00000000

01011010

11111111

10101100

例1.2 把16位补码0101101111001010、1010111101011011别扩展成32位补码。

解:根据符号扩展的含义,“字→双字”的具体扩展结果如下:

 

0101101111001010

 

1010111101011011

0000000000000000

0101101111001010

1111111111111111

1010111101011011

(8)n位二进制的表示范围

n位二进制所能表示的无符号整数的范围:0≤x≤2n-1。

n位二进制所能表示的有符号整数(补码表示)的范围:-2n-1≤x≤2n-1-1。

在汇编语言中,常用到n为8和16时的数值范围:

n=8时,无符号整数的范围:0~255,有符号整数的范围:-128~127;

n=16时,无符号整数的范围:0~65535,有符号整数的范围:-32768~32767。

(9)BCD码

把每位十进制数转换二进制的编码,简称为BCD码(Binary Coded Decimal)。(注意和二进制数的区别,BCD编码实际上就是0~9的“等值”二进制数。)

例1.3 求十进制数2000的BCD编码和其二进制数。

2000的BCD编码:0010 0000 0000 0000。

2000的二进制数是:11111010000,它们在数值上是相等的。

2、非数值数据表示

(1)ASCII码

ASCII码(American Standard Code for Information Interchange) 是一种7位二进制编码,针对英文的字母、数字和其它特殊字符进行编码,需要的时候可查表。

(2)汉字编码

我国在1981年5月对6000多个常用的汉字制定了交换码的国家标准,即:GB2312-80。该标准规定了汉字交换用的基本汉字字符和一些图形字符,它们共计7445个,其中汉字有6763个。该标准给定每个字符的二进制编码,即国标码。

3、基本数据类型

(1)字节

一个字节有8位二进制组成,其最高位是第7位,最低位是第0位,如右图所示。在表示有符号数时,最高位就是符号位。通常情况下,存储器按字节编址,读写存储器的最小信息单位就是一个字节。

(2)字

由2个字节组成一个字,其最高位是第15位,最低位是第0位。高8位称为高字节,低8位称为低字节,如右图所示。

(3)双字

用2个字(4个字节)来组成一个双字,其高16位称为高字,低16位称为低字,如右图所示。双字有较大的数据表示范围,它通常是为了满足数据的表示范围而选用的数据类型,也可用于存储远指针。