|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 loop 于 2011-5-3 17:13 编辑
我把我的实验五第五题的答案放上来,麻烦各位老师指出不当之处。
因为和题目一样设置C段我的编译器通不过,所以我改成了d,附上源代码
13.rar
(303 Bytes, 下载次数: 10)
- assume cs:code,ds:a,es:b,ss:d
- a segment
- db 1,2,3,4,5,6,7,8
- a ends
- b segment
- db 1,2,3,4,5,6,7,8
- b ends
- d segment
- db 1,2,3,4,5,6,7,8
- d ends
- code segment
- start: mov ax,a
- mov ds,ax
- mov ax,b
- mov es,ax
- mov bx,0
- mov cx,8
- s1: mov ax,es:[bx]
- add [bx],ax
- add bx,2
- loop s1
-
- mov ax,d
- mov ss,ax
- mov sp,30h
- mov ax,a
- mov ds,ax
- mov bx,0
- mov cx,8
- s2: push [bx]
- pop d:[bx]
- loop s2
-
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 以上我编译通过。但是我不知道正确与否!~
Debug第一步:(当时我请教网上的朋友,他没回复,我自己按照传统方法Debug查看)
加载程序后,我D查看了下,应该是OK
-d 13dc:0
13DC:0000 01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00 ................
13DC:0010 01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00 ................
13DC:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DC:0030 B8 DC 13 8E D8 B8 DD 13-8E C0 BB 00 00 B9 08 00 ................
13DC:0040 26 8B 07 01 07 83 C3 02-E2 F6 B8 DE 13 8E D0 BC &...............
13DC:0050 30 00 B8 DC 13 8E D8 BB-00 00 B9 08 00 FF 37 36 0.............76
13DC:0060 8F 07 E2 F9 B8 00 4C CD-21 CC 00 00 00 00 00 00 ......L.!.......
13DC:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Debug第二步,程序运行完没有达到预期效果,13DC:0000和13DC:0020处应为一致才是。
程序运行完后D 13dc:0020处变为如下,我想可能哪里出错了~
-d 13dc:0
13DC:0000 02 04 06 08 0A 0C 0E 10-00 00 00 00 00 00 00 00 ................
13DC:0010 01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00 ................
13DC:0020 02 04 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DC:0030 B8 DC 13 8E D8 B8 DD 13-13 3E 4F 03 00 00 00 00 .........>O.....
13DC:0040 00 00 00 00 00 00 DC 13-DE 0D 39 00 CC 13 12 32 ..........9....2
13DC:0050 30 00 B8 DC 13 8E D8 BB-00 00 B9 08 00 FF 37 36 0.............76
13DC:0060 8F 07 E2 F9 B8 00 4C CD-21 CC 00 00 00 00 00 00 ......L.!.......
13DC:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
进一步查看:
原来是我程序S2处少了一句 add bx,2
补充上这句- s2: push [bx]
- pop d:[bx]
- add bx,2
- loop s2
复制代码 最终编译结果如下:
-d 13dc:0
13DC:0000 02 04 06 08 0A 0C 0E 10-00 00 00 00 00 00 00 00 ................
13DC:0010 01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00 ................
13DC:0020 02 04 06 08 0A 0C 0E 10-00 00 00 00 00 00 00 00 ................
13DC:0030 B8 DC 13 8E D8 B8 DD 13-13 3E 4F 03 00 00 00 00 .........>O.....
13DC:0040 00 00 00 00 00 00 DC 13-DE 0D 3C 00 CC 13 12 32 ..........<....2
13DC:0050 30 00 B8 DC 13 8E D8 BB-00 00 B9 08 00 FF 37 36 0.............76
13DC:0060 8F 07 83 C3 02 E2 F6 B8-00 4C CD 21 CC 00 00 00 .........L.!....
13DC:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
应该是正确啦~~
程序看起来比较冗长,基本思路是将a段和b段先相加,相加结果放到a段,然后就是简单的将a段数据存到c段中,这个问题我们应该和测试点6.1(P129)第2题对某段内容进行改写问题是一样的,所以后半部分就是将a段内容改写至d段(写d段原因我在开头说了,另外我发现论坛内有部分TX反映c编译不了,可能也是这个原因,请改成d试试)内容。
最后还往各位指点,能给出比较简洁思路比较好的程序,我这个实在是为了完任务,当然可以使用后续章节的内容。谢谢! |
评分
-
查看全部评分
|