1、1. 数码系统1.1 汉字的内码计算与查看实验目的(1) 通过简单的工具软件来查看汉字在机器内的存储格式;(2) 学习通过 GB2312-80 文档来计算汉字的区位码,国标码和内码,以加深对汉字内码,国标码,区位码等概念的认识和理解;(3) 学习 debug 的使用。实验要求通过 GB2312-80 文档来计算汉字 “中”、 “国”、 “人”的区位码,国标码和内码,并通过简单的工具软件来查看汉字在机器内的存储格式,并将两者进行比较,观察结果是否一致。实验准备(1) 理论准备:汉字的区位码,国标码,内码等概念与 GB2312-80。 (机器内汉字以内码形式存储)(2) 工具准备:汉字内码查看器;
2、GB2312-80 编码表。实验步骤(1) 在 GB2312-80 国家标准文档中查找汉字的区位号,以“中”字为例。A. 双击打开 GB2312-80 编码表。B. 在左上角的“编辑” 菜单中选“ 查找”,在查找内容中键入“ 中”字,如图 1-1所示。图 1-1 GB2312-80 编码表C. 单击“查找下一个(F) ”按钮,进行查找,结果如图 1-2 所示(注意要查找的结果必须出现在排列的汉字矩阵中,不能出现在矩阵外,可多次按“查找下一个(F) ”按钮,直到查到为止) ,得到“中”字位于第 54 区,第 48 位(位号为左边的 4 加上上面的 8,即 48) 。图 1-2 查找结果(2) 将
3、“中”字的区号和位号分别转换为十六进制,得到它的区位码。区号:54 = 36H 位号:48 = 30H则“中”字的区位码为:3630H。(3) 将区位码加上 2020H 即得到它的国标码。则“中”字的国标码为:5650H。 (4) 将国标码加上 8080H 即得到它的内码(在机器中的存储形式) 。则“中”字的内码为:D6D0H。(5) 利用工具软件“汉字内码查看器”查看汉字“ 中”的内码,如图 1-3 所示。图 1-3 汉字内码查看器(6) 将计算出来的内码与汉字内码查看器显示的内码进行比较。1.2 文本文件的存储格式实验目的通过 debug 软件来查看文本文件在机器内的存储格式,以加深对 A
4、SCII 码,汉字内码等概念的认识和理解,同时学习 debug 的使用。实验要求用记事本生成一个含有 ASCII 码和汉字的文本文件,包含若干换行,再用 debug 软件查看该文件的内容和长度。实验准备(1) 理论准备:ASCII 码,汉字的内码等概念。(2) 工具准备:汉字内码查看器;GB2312-80 编码表。(3) 操作准备:将包含工具软件的文件夹 TXT 复制到 C 盘的根目录下。实验步骤(1) 用 Windows 操作系统下的记事本程序在 TXT 目录中生成 test.txt 文件。文件内容为:(注意,有三个换行,最后一行没有换行符。 )abcABC012中国人(2) 计算文件的长度
5、。换行符在计算机内部被表示成回车符(0DH)和换行符( 0AH) ,英文字母和数字均以ASCII 码的形式存储,每个字符占一个字节,而汉字则以内码形式存储,每个汉字占两个字节,所以可以计算该文件的大小为:9*1(英文和数字)+3*2(3 个汉字)+3*2(3 个换行)= 21 字节。(3) 在 Windows 下查看文件 test.txt 的长度,观察是否与计算的文件大小一致,方法为指向文件后按鼠标右键,选“属性”,如图 1-4 所示。图 1-4 test.txt 文件的属性(4) 使用 debug 查看文件的内容和长度。 A. 首先进入 DOS 方式(点 Windows 左下角的“开始”按钮
6、,再选择 “运行”,键入cmd 回车) 。B. 进入 test.txt 文件所在的目录 TXT,键入命令:cd c:txt,回车。C. 键入:debug test.txt ,回车,出现 “-”(短横线,为 debug 软件的提示符) 。D. 键入:r,回车,查看文件的长度。注意,debug 软件装入文件后,文件的长度存储在 BX 和 CX 中,单位是字节,其中 BX 是高位,CX 是低位,本例中 BX=0000,CX=0015,由于 debug 中全部是十六进制,因此文件 test.txt 的长度为:00000015H,即十进制的 21 字节。这与我们前面计算和查看的文件长度一致。E. 键入:
7、d,回车,显示文件的内容。1.3 整数在机器内的存储形式实验目的通过简单的汇编程序和 debug 来查看整数在机器内的存储格式,目的是加深对补码的理解和认识,学习 debug 的使用。实验要求在已经编写好的汇编程序 int.asm 中修改相应的数据分别为15、63、127,再对该程序进行汇编和链接,最后用 debug 软件查看生成的可执行文件 int.exe 中的数据存储。实验准备(1) 理论准备:定点整数的补码表示。 (机器内整数通常以补码形式存储)(2) 工具准备:已经编写好的汇编程序 int.asm;进行汇编和链接用的程序masm.exe 和 link.exe;debug 软件为 Win
8、dows 操作系统自带。(3) 操作准备:将含有上述工具软件和源程序的文件夹 INT 复制到 C 盘的根目录下。实验步骤(1) 在 int.asm 中修改相应的数据。用记事本等纯文本工具打开 int.asm,修改相应的数据(下面程序中的粗斜体部分) ,从而查看某整数在机器内的存储形式。注意:程序的其它部分不要改动。改动后注意保存。例如本例中将查看两个整数+15 和-15 分别用 8 位,16 位,32 位,64 位存储时的存储形式。int.asm 源文件的内容:data segmentdb +15 ; 8 位整数 db: define bytedb -15dw +15 ; 16 位整数 dw:
9、 define worddw -15dd +15 ; 32 位整数 dd: define double worddd -15dq +15 ; 64 位整数 dq: define quardworddq -15 data endscode segmentassume ds:data,cs:codemain proc farstart:mov ax, data ;让 DS 指向数据段mov ds,ax mov ax, 4c00hint 21hmain endpcode endsend start(2) 汇编和链接。A. 进入 DOS 方式(点 Windows 左下角的“开始”按钮,再选择 “运行”
10、,键入cmd 回车) 。B. 进入 int.asm 程序所在的目录:cd c:int,回车。C. 用 masm int.asm 命令进行汇编,将源程序汇编成目标程序,连续回车,直到出现 DOS 提示符。D. 用 link int.obj 命令进行链接,将目标文件链接成 exe 文件,连续回车,直到出现 DOS 提示符。(3) 利用 debug 查看 int.exe 的数据存储。A. 键入命令 debug int.exe,回车,出现“-”(短横线,为 debug 软件的提示符)。B. 键入命令 u,回车,观察输出结果。C. 找到第一行 MOV AX,13CE 处的数 13CE(注意,你的机器上显示的不一定是这个数,假设为 X) ,然后键入: dX:0,回车,本例中键入:d13ce:0。D. 查看所显示的整数的存储形式。 (注意存储时高位是存储在高地址单元中的)E. 将所查到的整数的存储形式和自己在稿纸上按定点整数补码算出的形式比较,观察结果是否一致。