Kuroba_Kaito 发表于 2012-7-31 10:38:43

汇编实验9里的一个小问题,求助..

assume cs:code
code segment
                        start: mov ax,0B800H
                             mov ds,ax
                                   mov bx,41h
                                   mov si,0
                                   mov cx,6
                               s:mov ah,02h
                                   mov al,bl
                                   mov ,al
                                   inc si
                                   mov ,ah
                                   add bx,1
                                   inc si
                                   loop s
                               
code ends
end start
这段代码是往 B800:0000 写入 41 02 42 02 43 02 44 02 45 02 46 02 .. .. ..
我debug时看到不对 不知什么原因 改了好久。。。求助

lukelqz 发表于 2012-7-31 11:00:49

没有任何问题,你的程序。不过你不要再用d命令查看b800h:0处的值了。因为你一查看。你那个刚刚在显卡出写入的绿色的几个字就没了。这样b800:0处的值也就随着屏幕字的改变,而改变。所以你查看的值不是你想要的。这题只要你能把你要写出的字,能写出来。就是对的。由于b800:0处值是随时随屏幕的显示变化而变化的,所以你这次用d命令查是一个值,下次查又是另外的值了。他不是固定的。

Kuroba_Kaito 发表于 2012-7-31 11:09:18

lukelqz 发表于 2012-7-31 11:00 static/image/common/back.gif
没有任何问题,你的程序。不过你不要再用d命令查看b800h:0处的值了。因为你一查看。你那个刚刚在显卡出写入 ...

原来如此 谢谢 有时 我运行还会弹出 NTVDM CPU无效

Kuroba_Kaito 发表于 2012-7-31 11:11:33

lukelqz 发表于 2012-7-31 11:00 static/image/common/back.gif
没有任何问题,你的程序。不过你不要再用d命令查看b800h:0处的值了。因为你一查看。你那个刚刚在显卡出写入 ...

谢谢 已经能看到ABCDEF了基本上解决了 那个问题 可能是 java虚拟机的问题

lukelqz 发表于 2012-7-31 11:22:47

Kuroba_Kaito 发表于 2012-7-31 11:09 static/image/common/back.gif
原来如此 谢谢 有时 我运行还会弹出 NTVDM CPU无效

你那个问题很可能不是虚拟机的问题。你在用到栈的时候,又用debug的t命令调试的时候,经常会遇到你说的情况。http://bbs.fishc.com/forum.php?mod=viewthread&tid=20314&page=1#pid345931看下这个帖子。发生了栈顶越界的问题。你用g命令直接跳过就好了。结果一样的。比如实验五的第六题。你用栈写的话,t单步调试肯定出错。用g命令直接跳过循环就没有问题。主要是t的问题。不用太在意。执行结果是没问题的。
页: [1]
查看完整版本: 汇编实验9里的一个小问题,求助..