汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习_第1页
汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习_第2页
汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习_第3页
汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习_第4页
汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ASCII码与BCD码之间的转换1)字符的ASCII码表示计算机中存储的信息很多,其中一部分是用于数学计算的数据,另一部分则是表示某种含 义的字符或字符串。由于从键盘输入的或屏幕显示的信息,都是用字符串的形式表示的。因 此,微机中必须能够存储和处理字符和字符串。计算机中使用的字符包括有如下4类:字母:A、B、C、Y、Z、a、b、c、y 和 z。数字:0、1、2、3、9。专用符号:!、+、一、*、/、控制字符:BEL (响铃)、LF (换行)、CR (回车)这些字符在计算机内部都由特定的二进制数表示。目前在微机中,最常用的字符表示法 是 ASCII 码(American Standard Cod

2、e for Information Interchange,美国标准信息交换 码)。在这种表示法中,每一个字符可以表示为一个8位的二进制数,即一个字节。其中。低 7位用于表示该字符的ASCII值,最高位未定义,一般可用作奇偶校验位。常用字符的ASCII码表见表1.2。2)、十进制数的BCD码表示BCD码(Binary Code Decimal),又称“二进制表示的十进制数”,是一种非常适合数据 输出的编码。一般而言,它可分为如下两种:、压缩型BCD码:它用4位二进制数表示一位十进制数。即采用二进制数0000 1001分别表示十进制数中的09,而另6种组合10101111在BCD中则不允许出现;

3、、非压缩型BCD码:它用8位二进制数,即一个字节表示一位十进制数。其高4位 固定为0,而低4位采用二进制数00001001分别表示十进制数中的09。亦即用000000000000 1001分别表示十进制数中的09。而其余组合则不允许出现。表1列出了十进制数与BCD编码的对应关系。表1 BCD编码表BCD编码十进制数BCD编码十进制数00000100080001110019001021010这六种001131011情况在010041100BCD码010151101中不允011061110许出现011171111实验程序按如下步骤操作,了解DEBUG命令及其使用方法。打DEBUG进入DEBUG控制

4、,显示提示符_ 。 用命令F100 10F A将A的ASCII码填入内存。用命令D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。再用命令D100 观察内存情况,之后接用二个命令D观察内存情况。再用命令D100:10F观察内存区的情况,说明这次与上次内存区各个段地址是什么,为什么?口 |x年C:IND0TSsyste*32cd. exe debugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4L.4141414141414141-4141414141414141_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M -M- -

5、M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -M- -K- -M- -M- _M -M- -M- -M- -M- -K- -M- -M-14000000 41000000 1E000000 45000000 10000000 4IS 0 14000000 43000000 10000000 4 0 0 0 0 0 1-0000000 -M- _M- _M- _M- _M- _M- _M- 10000000 4IS _M- _M- _M- _M-0 10000000 4* 3 0 -M- 0 0 -M-

6、0_M- _M -M- _M _M- _M0 -M- 0 0 0 0 -M- 0 0 -M- _M- -M- _M _M- _M- _M _M- -M- 0 0 0 0 -M- 0 0 -M- 0 0 0 0 -M- 0 0 _M- _M -M- _M _M- _M0 -M- _M- -M- _M- _M- _M- _M- _M- -M- _M- -M- _M _M- _M- _M _M- _M- _M -M- _M _M- _M0 0 0 0 0 0 0 -M- 0 0 0 0 -M- 0 0 -M- _M- -M- _M- _M- _M- _M- _M- -M- 0 0 0 0 -M- 0

7、 0 _M- _M -M- _M _M- _M0 _M- _M -M- _M _M- _M0 -M- 0 0 0 0 -M- 0 0_M- -M- _u -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M0 0 0 0 0_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M0 0 0 0 010-0-0-0-0-0-04 0 0 -M- 0 0 -M- 0 1-0000000 4IS _M- _M- _M- _M-0

8、 10000000_M- _M- _M- 10000000 4* 3 0 -M- 0 0 -M- 0 1-0000000 -M- _M- _M- _M- _M- _M- _M- 10000000 4IS _M- _M- _M _M- _M-0 10000000 0 0 -M- 0 0 -M- 0 10000000 4 0 0 -M- 0 0 -M- 0-M- _M- -M- _M _M- _M- _M _M- -M- 0 0 0 0 -M- 0 0 -M- 0 0 0 0 -M- 0 0 _M- _M -M- _M _M- _M0 -M- _M- -M- _M- _M- _M- _M- _M-

9、 -M- _M- -M- _M _M- _M- _M _M- _M- _M -M- _M _M- _M0 -M- 0 0 0 0 -M- 0 0 -M- 0 0 0 0 -M- 0 0 -M- _M- -M- _M- _M- _M- _M- _M- -M- 0 0 0 0 -M- 0 0 _M- _M -M- _M _M- _M0 -M- _M- -M- _M- _M- _M- _M- _M- -M- 0 0 0 0 _M 0 0 -M- _M- -M- _M _M- _M- _M _M- -M- 0 0 0 0 -M- 0 000IS00IS00 _M -M- -M- -M- -M- -M-

10、 -M- -M-_M -M- -M- -M- -M- -M- -M- -M0 0 0 0 0 0 0 0_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-000000 _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -M- -M- -M- -M0 0 0 0 0 0 0 00IS00-K-00IS _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -K- -M- -M- -K- 0 0 0 0 0 0 0 0_M -M- -M- -M- -K

11、- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-00000 _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -K- -M- -M- -K- 0 0 0 0 0 0 0 0-F100 10F -D 100 10F 146F:0100 -D 100 146F:0100 146F:0110 146F:0120 14GF:0130 146F:0140 146F:0150 14GF:01G0 146F:0170-D14GF:0180146F:0190146F:01A0146F:01B0146F:01C0146F:01D01

12、46F:01E0146F:01F0g C:INDOSsystem32cmd. exe 一 debug_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M0 0 0 0 0_M- -M- -M- -M- -M- _M-

13、 -M- -M- -M- -M-_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M0 0 0 0 0_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M0 0 0 0 0_M- -M- -M- -M- -M- _M- -M- -M- -M- -M-_M- -M- -M- -M- -M3 4 5 6 7 11111 0 0 0 0 0FFFFF000000 _M -M- -M- -M- -M-

14、-M- -M- -M-00000 _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -M- -M- -M- -M0 0 0 0 0 0 0 0_M -M- -M- -M- -K- -M- -M- -K- 0 0 0 0 0 0 0 0_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M-

15、 -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -M- -M- -M- -M0 0 0 0 0 0 0 0_M -M- -M- -M- -K- -M- -M- -K- 0 0 0 0 0 0 0 0_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-_M -M-

16、-M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M -M- -M- -M- -K- -M- -M- -K-_M -M- -M- -M- -M- -M- -M- -M0 0 0 0 0 0 0 0_M -M- -M- -M- -K- -M- -M- -K- 0 0 0 0 0 0 0 0_M -M- -M- -M- -M- -M- -M- -M- _M -M- -M- -M- -M- -M- -M- -M-_M -M- -M- -M- -K- -M- -M- -K- _M

17、-M- -M- -M- -K- -M- -M- -K-F _M -M- -M- -M- -M- -M- -M- -M- -M- -M- -M- -M- -M- -M- _u -M- -M- -K- 89ABCDEF10123456780 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _M_ 0 FFFFFFFF100000000(4)用命令F110:11F A重复上二项实验,设法用D命令找到并观察结果,进行比较。00 00 00 00 00-00 00 00 00 3400 5E 1400 00 0000 00 00 00 00-00 00 00 00 00440 0 0 0

18、 0 0 0 0_M _M- -M- _M- _M _M0 -M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 0 0 0 0 -M- 0 0 0 -M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 -M- _M- _M- -M- _M- _M- _M-0 0_M _M- -M- _M- _M _M0 0 0 0 0 0 0 00 0 0 0 0 0 0 0_M _M- -M- _M- _M _M0 -M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 -M-

19、 _M- _M- -M- _M- _M- _M-0 -M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 -M- _M- _M- -M- _M- _M- _M-0 0_M _M- -M- _M- _M _M0 0 0 0 0 0 0 04 0 0 IS 0 0 0 30000000 -M- _M- _M- _M- _M- _M _M- _M- 0 0 0 -M- _M- 0 0 0 0 0 0 -M- _M- 0 0 0 -M- _M- _M- _M- _M- _M _M- _M- 0 0 0 _M _M- 0 0 0 -M- _M- _M- _M-

20、 _M- _M- _M- _M- 0_M _M- _M- _M _M0 0 0 0 IS 0 0 00 0 0 IS 0 0 0 0_M _M- _M- _M _M0 -M- _M- _M- _M- _M- _M _M- _M- 0 0 0 -M- _M- 0 0 0 -M- _M- _M- _M- _M- _M- _M- _M- -M- _M- _M- _M- _M- _M _M- _M- 0 0 0 _M _M- 0 0 0 -M- _M- _M- _M- _M- _M- _M- _M- 0_M _M- _M- _M _M0 0 0 0 IS 0 0 00 0 0 0 -M- 0 0 0

21、-M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 -M- _M- _M- -M- _M- _M- _M-0 0_M _M- -M- _M- _M _M0 0 0 0 0 -M- 0 0 0dx 0 0 -M- _M- 0 0 0 10000000 E0000000 50000000 0_M _M- _M- _M _M0 0 0 0 -M- -M- 0 0 00 0 0 0 0 0 0 0_M _M- -M- _M- _M _M0 -M- _M- _M- -M- _M- _M _M- _M- 0 0 0 0 -M- 0 0 0 _M _M- -M-

22、 _M- _M- _M- _M- -M0 0 0 -M- 0 0 0 00 0 0 IS 0 0 0 0_M _M- _M- _M _M0 -M- _M- _M- _M- _M- _M _M- _M- 0 0 0 -M- _M- 0 0 0 _M _M- _M- _M- _M- _M- _M- -M0 0 _M _M- 0 0 0 000 00 00146F:0180 RF110:11F HdIIB 11F 146F:0110 -Dill (146F:0110 146F:0120 146F:0130 146F:0140 146F:0150 146F:0160 146F:0170 146F:01

23、80146F:0190D(146F:0190 146F:01A0 146F:01B0 146F:01C0 146F:01D0 146F:01E0 146F:01F0 146F:0200 146F:0210g C:INDO1Ssystem32cad. exe 一 debug146F 146F 146F -D 146F 146F 146F 146F 146F 146F 146F 146F 146F -D 1: 0110 0110 0110 0110 0110 0110 0110 0110 011001F0020002100210 0220 0230 0240 0250 0260 0270 0280

24、 0290 0:11F0110 0120 0130 0140 0150 0160 0170 0180 019000000000000000000000000000000000-0000-000000000000000000000000000000-M- -M- -M- _M -M- -M- -M- -M- _M- -M- _M- _M- 000_M- IS000 -M- -M- -M- _M -M- -M- -M- -M- _M- iS _M Si Si Si iS Si 00_M- IS000044-4-44444 44444444 4444-4444000_M- IS000 -M- _M-

25、 _M- -M- _M- _M- _M- _M- 000_M- IS000 000_M- IS000 -M- -M- _M- _M- _M- 000_M- IS000 -M- _M- _M- -M- _M- _M- _M- _M- -M- -M- _M- _M- _M-M- -M- -M- _M -M- -M- -M- -M- _M- -M-000_M- IS000 _M- _M- _M- -M- _M- _M- _M- _M- -M- iS _M Si Si Si iS 000_M- IS000 -M- -M- _M- _M- -M- iS _M Si Si Si iS _M- _M- _M

26、- -M- _M- _M- _M- _M- -M- -M- _M- _M- 000_M- IS000 _M- _M- _M- -M- _M- _M- _M- _M- 000_M- IS000 000_M- IS000414141414141414141414141414141414141414141414141414141414141414141-41 41-41 41-41 41-4141-41 41-41 41-41 41-414141414141414141414141414141414141414141414141414141414141414141414141414141414141

27、414141414141414141414141414141AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(5)用命令 E100 30 31 323F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?444-444-444444444490000000300000008000000030000000of -M- _M- _M

28、- _M- _M- _M- _M- 30000000 Lb_M 0 -M- iS 0 -M30000000 50000000 30000000_M- _M- _M- _M- _M- _M- 31000000 EE000000 35000000 D0000000 300000004444444444444444444-444-44i 1 44llulul444444444444444444444444C400000033000000iH _M-300000004C3 3B000000030000000i 1 44llulul44444444llulul4444444444444444JA -M-

29、 0 -M- _M- 0 _M- _M- 300000001 93 3300000003000000020000000300000001000000030000000 -M- _M- 0 _M- _M- 0 _M-30000000414141414141414144444444(6)用H命令检查下列各组16进制数加减结果并和你的手算结果比较: 34H,22H 56H,78H A5,79H 1284H,5678H A758,347FH 例如:H 34 220123456789:;?A 人-M- -M- -M- -M- -M- -M31000000 3 3 EE000000 -35000000 4

30、-4-D0000000 30000000C4000000 4C 33000000 3 3- PQ _M- _M- _M- _M- _M- _M- _M- 11 30000000 44-M- -M- -M-0000 300000003 B 90000000 3 3 3000 000011 44i i 44Lb-M- -M- -M-0000 3000000050000000300000004 _M- _M-19 30000000 -3000000011 3000000020000000 3000000008 100000003 3 3000000041413000000000000000-E 10

31、0 146F:0100 146F:0108 -D100 146F:0100 146F:0110 146F:0120 146F:0130 146F:0140 146F:0150 146F:0160 146F:01?0 -34H,22H 人 Error-H 34 0056 -H 56 00CE -H A5 011E22 0012 78 FFDE 79 002C-H 1284 5678 68FC BC0C -H A758 347F DBD7 72D9(7)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和 AF的内容。e C:INDOSsyste32cmd. exe

32、 一 debug46F:0100 3046F:0110 0046F:0120 0046F:0130 0046F:0140 0046F:0150 0046F:0160 0046F:0170 00P34H,22H卜 Erro r一H 34 220056 001256 7800CE FFDE-H A5 79011E 002CPH 1284 567868FC BC0C-H A758 347FDBD7 72D9100130013030000000A 0 0 0 0 0 0 0 30000000 9 0 0 0 0 0 0 0 30000000 _b -M- _M -K- -M- -M- -M- -M30

33、000000 50000000 30000000 400 0000 0 30000000 30000000 30000000 20000000 3000000000-M-031000000EE0000003500000030000000C400000033000000B0000000300000000123456789:;?AM=0000 BK=00001)S=146F ES=146F 146F:0100 3031CX =0000 DX =0000 SP=FFEE SS=146F CS=146F IP=0100XOR EBX+DI,DHBP=0000 SI=0000 DI=0000NU UP

34、El PL NZ NA PO NCDS:0000=CD(8)用R命令将AX,BX内容改写为1050H及23A8H。m C:INDOSsyste32cmd. exe 一 debug34 226 001256 78E FFDEPH A5 79011E 002CPH 1284 567868FC BC0C-H A758 347FDBD7 72D9BK=00001)S=146F ES=146F146F:0100 3031CX =0000 DK =0000 SP=FFEE SS=146F CS=146F IP=0100XOR EBX+DI,DHBP=0000 SI=0000 DI=0000NU UP El

35、 PL NZ NA PO NCDS:0000=CDX00 X08 a 0 5 b 0 A r X1 r X 2 一 e一 B 二-Fpx=1050 BX=23A8PS=146F ES=146F146F:0100 3031CX =0000 DX =0000 SP=FFEE SS=146F CS=146F IP=0100XOR BX+DI,DHBP=0000 S I *000 DI =0000 NU UP El PL NZ NA PO NC DS:23A8=00(9)用A命令在内存100H处键入下列内容:MOV BX, 8275HMOV AX,3412HADD BX,92A5HADC AX,2F6

36、5HADD BX,EAE6HADC AX,9C88H用U命令检查键入的程序并记录,特别注意左边的机器码。用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并 注意标志位有无变化。 TOC o 1-5 h z 标志位显示10CFCYNCZFZRNZSFNGPLAFACNAOFOVNVPFPEPODFDNUPIFEIDI(1)对照书本中关于debug操作的介绍对以上实验内容进行总结。-上入 Error A 180 46F:0100 46F:0103 46F:0106 46F:010A 46F:010D 46F:0111 46F:0114 Ll 100 46F:0100 46

37、F:0103 46F:0106 46F:010A 46F:010D 46F:0111 46F:0114 46F:0116 46F:0118 46F:011A 46F:011C 46F:011E 46F:011Fnou nou add adc add adcbx.8275 ax,3412 bx,92fi5 ax,2F65 bx,EAE6 ax,9C88BB7582 B81234 81C3A592 15652F 81C3E6EA 15889C 0000 0000 0000 0000 3400 5E 1400UUDCDCDDDDRPCOODDDDDDDDOODMMAAAAAAAAXPABX.8275

38、 AX,3412 BK,92A5 AX.2F65 BX.EAE6 AX,9C88 BX+SIJ,AL BX+SI.AL BX+SI.AL BX+SIJ,AL AL.00 SI AL,00C: WINDOTSsyst e32cd. exe - debugG命令的功能是什么?有那几种格式?D命令的功能是什么?有那几种格式?用P命令逐条运行上述指令,与T命令进行比较,阅看书本中关于这二个命令的说明,它们之间有什么不同,在本实验中为什么没有体现?本试验未体现在编译与连接生成执行程序之后利用DEBUG调试该程序,了解不同变量数据存储 情况,了解变量的三种含义及用法,了解加法、乘法运算方法及对标志位的影响

39、。(在某些 句后给出了单步执行该句后需要思考与记录的问题)。DATA SEGMENTA DW 35H,9AC9HDB 34HB DW 4CBEH,8872HDB 34HCDD8A607HDB 34HDDD98AB457HDB 34HEDB-48HDATA ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATA;数据段在那里?怎样看数据段中的内容?MOV DS,AX;在执行一次单步后查看数据区,记录数据是怎样存放的。;对以下每句运行后分析:

40、这一句的意义是什么?;如果是加法,相加的数据是什么?在存储区什么位置?;处理的结果在那里?;对标志位的影响如何?;观察一下,如果去掉“WORDPTR”编译时会如何?MOV AX,OFFSET A+2;AX中值是多少?意义是什么?LEA AX,A+2; AX中值是多少?意义是什么?MOV AX,A+2ADD AX,B+2 ;多少加多少,结果在那里?等于多少?有没有标志改变?MOV BX,AADC BX,B ;多少加多少,结果在那里?等于多少?有没有标志改变?MOV AX,WORD PTR CADD AX,WORD PTR D;多少加多少MOV AX,WORD PTR C+2ADC AX,WORD

41、 PTR D+2;多少加多少;对以下每句分析:数据是如何存放的?;相乘结果在那里?;对CF与OF的影响如何?特别注意进位与符号扩展并不完全对应MOV AL,EMOV BL,-3MUL BL ;多少乘多少,结果在那里?等于多少?有没有标志改变?为什么?MOV AL,EMOV BL,3MUL BL ;多少乘多少,结果在那里?等于多少?有没有标志改变?为什么?MOV AL,EMOV BL,-3IMUL BL ;多少乘多少,结果在那里?等于多少?有没有标志改变?为什么?MOV AL,EMOV BL,-1IMUL BL ;多少乘多少,结果在那里?等于多少?有没有标志改变?为什么?MOV AL,EMOV

42、BL,3IMUL BL ;多少乘多少,结果在那里?等于多少?有没有标志改变?为什么?MOV BL,-1MUL BL;-1=ffh,cf=1。为什么?MOV AL,58hMOV BL,-1iMUL BL ;-1,cf=0,高位全1。为什么?MOV AL,90hMOV BL,-1MUL BL;-1=ffh,cf=1。为什么?MOV AL,90hMOV BL,-1IMUL BL ;-1,cf=0,高位全0。为什么?MOV AL,58hMOV BL,1MUL BL ;*1,cf=0,高位全0。为什么?MOV AL,58hMOV BL,1iMUL BL ;*1,cf=0,高位全0。为什么?MOV AL,

43、90hMOV BL,1MUL BL ;*1,cf=0,高位全0。为什么?MOV AL,90hMOV BL,1IMUL BL ;*1,cf=0,高位全1。为什么?MOV AH,4CHINT 21HCODE ENDSEND START(1)乘法运算时使CF与OF为0的情况其实不多见,你能否总结一下大致在什么情况下会 出现它们为0的情况?(2)如果要看到数据中数据的存放情况,一种方法是用D段地址偏移地址,另一种方 法是用DDS:偏移地址。你用什么方法得到段地址?试用这二种方法观察数据区中数据存 放情况,A、B、C、D、E的地址各是多少,为什么?3.检查下面那些指令是错误的,说明原因并改正。(用MAS

44、M对该程序进行编译,观察 那些语句报错,报的是什么错?再看语句,根据语法与句法分析实际是什么错,在语句后加 简单注释,说明错误原因,尝试进行修改,要求尽量使修改结果符合原设计意图。最终要求 全部修改后能通过编译。)DATA SEGMENTBUFDB 3DA1DB ?C DB B,0DH,0AH,$COUNT EQU $-CDATA ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV DL,255HINC COU

45、NTMOV CS,DXCMP 280,BLPUSH DXLEA AL,CMOV BX,DA1DXSUBDI,SIADDDX,BXMOV80H,AXMOVDA1,AXADDDI,10HMOVBX,OFFSET DA1MOVSI+DI,BXINC CSMOVES,DSPOPAHROLAX,2MOVBX,DA1DIMOV AH,4CHINT 21HCODE ENDSEND STARTASCII码与压缩型BCD码的相互转换4.十进制数的ASCII码转换为压缩型BCD码令数据段中自ASC_BUF开始的缓冲区内存放着若干个ASCII码表示的十进制数(每个 单元存放一位十进制数),要求将这些ASCII码表示

46、的十进制数转换为BCD码,并把两个相 邻单元的BCD码合并在一个存储单元(若ASCII码的个数为奇数,则将首地址单元的十进制 数对应的BCD码单独存放一个单元,其余的按统一的方法处理)。应用DEBUG跟踪执行程序, 当程序执行到语句MOVAH,4CH时,查看数据区的内容,分析运行结果。通过执行过程深入理解内存储器分段的概念。本程序中因有的位置使用了中文符号,在编译时会报错,观察是如何报错的?检查问 题出现在什么地方,将之改正后重新编译直到通过。DATASEGMENTASCJBUF DB 71542185COUNT EQU $-ASC_BUFBCDBUF DB 10 DUP(?)DATAENDS

47、CODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET ASC_BUFMOV DI,OFFSET BCDBUFMOV CX,COUNTMOV BX,CXSHR BX,1;BX右移一位,等效于除2JNC EVEN1;(CF)=0,则 CX 为偶数MOV BL,SI;对首位单独进行处理AND BL,0FHMOV DI,BLDEC CXINC SIINC DIEVEN1:MOV AL,SIAND AL,0FH;清高4位为0MOV BL,SI+1AND BL,0FH;清高4位为0MOV DL,16MUL DLADD AL,BLMOV DI,ALADD SI,2INC DIDEC CXJNZ EVEN1MOV AH,4CHINT 21HCODEENDSEND START(1)画出本程序程序流程图。(2)将71542185改为471542185,观察结果有何不同,分析程序中判断数字个数奇偶并“对首位单独进行处理”的意义与程序设计方法。(3)总结将二个十六进制字符拼成一个八位二进制数的程序设计方法。5,压缩BCD码转换为十进制数的ASCII码将数据段中字节变量BCDjBUF为首地址的缓冲区中一个八位十进制数对应的压缩BCD码转换为ASCI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论