|
主题 : : 实验九的问题 [已解决] |
回复[ 13次 ]
点击[ 372次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-06-04 20:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm'
db 00000010B,01000010B,01110001B
data ends
stack segment
dw '0' dup(8)
stack ends
code segment
begin:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10H
mov ax,0b8a0H ;set display row
mov cx,3
mov bx,0
mov si,0
s:
push cx
mov di,0
mov cx,0FH
push bx
p: mov aH,ds:[si+010H]
mov al,ds:[di]
mov es:[bx+di],ax
inc bx
inc di
loop p
pop bx
add bx,0A0H
pop cx
inc si
loop s
mov ax,4c00H
int 21H
code ends
end begin
实验九 这么做 对吗? 为什么我在windows系统下不能运行呢?? | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-06-04 20:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51 |
看了你的程序,问题应该不难发现。
建议楼主仔细读一下代码,再调试一下,既然你能写成这样,相信你有实力调出来。
加油! | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-06-05 08:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
当局者迷,正因为是自己写的才不找不到错,才在网上求高手帮忙啊 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-06-05 08:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
楼主的这个解释不好,这已经是第几章的程序了,难道前面几章的程序楼主也是这么过来的,不是吧。调试程序一般都会比写程序难,不过也是最能提高能力的过程。
实验九 这么做 对吗? 为什么我在windows系统下不能运行呢??
---------------
这个实验不论在实dos还是虚拟dos,还是运行cmd命令,都是没有问题的,所以出错的只能是楼主的程序。并且刚我运行了一下程序,发现问题很简单,希望楼主不是抄程序少了东西!
这个程序我做的时候,第一步我是实现了显示一个字符,然后再加循环显示字符串。这应该也符合从简单到复杂的原则吧,但是楼主的程序一个字符也显示不出来,楼主应该找找原因。
debug是调试汇编程序的必备工具,用debug调试一下就出来了,不能显示字符有两个需要注意下,一是字体的颜色(写进去了,但是颜色和背景一样,我们看来和没写一样) 。二是,字符是否写进去了,写到别处了自然也就看不到了。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-06-05 10:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
我也做了个测试程序 用debug跟踪,程序能完成执行,便也是不显示任何字符
这是源码
assume cs:code
code segment
begin:
mov ax,0b8a0H
mov ds,ax
mov al,49
mov ah,01000010B
mov bx,0
mov ds:[bx],ax
mov ax,4c00H
int 21H
code ends
end begin
如果直接执行
C:\>a.exe
C:\>
也是什么信息都没有 不知道为什么,是不是不能在xp系统下调试啊 | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-06-05 10:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51 |
楼主 mov ax,0b8a0H ;set display row
这句代码是干啥用的??? | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-06-05 10:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51 |
;也是什么信息都没有 不知道为什么,是不是不能在xp系统下调试啊
???
我试了一下,有啊 红底绿字一个1,在第16行第一列 | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-06-05 12:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
回复:[第6楼]
------------------
在我的系统是怎么不行呢
我知道这个一定行,可是在我的系统是怎么能运行呢,一运行马上就退出了,跟就不显示信息 | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-06-05 12:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm'
db 00000010B,01000010B,01110001B
data ends
stack segment
dw '0' dup(8)
stack ends
code segment
begin:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10H
mov ax,0b8a0H
mov es,ax
mov cx,3
mov bx,0
mov si,0
s:
push cx
mov di,0
mov cx,0FH
push bx
p: mov aH,ds:[si+010H]
mov al,ds:[di]
mov es:[bx+di],ax
inc bx
inc di
loop p
pop bx
add bx,0A0H
pop cx
inc si
loop s
mov ax,4c00H
int 21H
code ends
end begin
这是我编写的那个程序,在windows下不能运行 | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-06-08 22:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04 |
如果直接执行
C:\>a.exe
C:\>
也是什么信息都没有 不知道为什么,是不是不能在xp系统下调试啊
------------------
楼主所谓的直接执行是这样的吗?不会是你没有输入C:\>debug a.exe
那前几章的程序是如何debug 跟踪的? | | |
|
|
|
|
[第10楼]
[ 回复时间:2008-06-09 09:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
是的
通过debug跟踪可以一个字一个字的显示出来,我想看看整体显示的效果
不知道怎么办 | | |
|
|
|
|
[第11楼]
[ 回复时间:2008-06-09 10:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04 |
C:\>debug a.exe
然后用反汇编查看”mov ax,4c00h“此句在什么位置,我查了一下在“0038”
最后输入“g 38"就会显示啦。
楼主好像对前面的知识掌握不深呢 | | |
|
|
|
|
[第12楼]
[ 回复时间:2008-06-09 14:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2008-02-23 16:11 |
跟我的情况一样,直接运行exe文件test9c.exe什么反映都没有,就象没有运行任务命令一样。 | | |
|
|
|
|
[第13楼]
[ 回复时间:2008-06-18 15:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11 |
此贴由 贴主 于 [ 2008-06-18 15:12 ] 结贴。 结贴原因:问题已解决 | | |