. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九的问题  [已解决] 回复[ 13次 ]   点击[ 372次 ]  
tianlong1569
[帖 主]   [ 发表时间: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系统下不能运行呢??
deepblue
[第1楼]   [ 回复时间:2008-06-04 20:28 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51
看了你的程序,问题应该不难发现。

建议楼主仔细读一下代码,再调试一下,既然你能写成这样,相信你有实力调出来。

加油!
tianlong1569
[第2楼]   [ 回复时间:2008-06-05 08:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11
当局者迷,正因为是自己写的才不找不到错,才在网上求高手帮忙啊
mouse
[第3楼]   [ 回复时间:2008-06-05 08:59 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
楼主的这个解释不好,这已经是第几章的程序了,难道前面几章的程序楼主也是这么过来的,不是吧。调试程序一般都会比写程序难,不过也是最能提高能力的过程。

实验九 这么做 对吗? 为什么我在windows系统下不能运行呢??
---------------
这个实验不论在实dos还是虚拟dos,还是运行cmd命令,都是没有问题的,所以出错的只能是楼主的程序。并且刚我运行了一下程序,发现问题很简单,希望楼主不是抄程序少了东西!

这个程序我做的时候,第一步我是实现了显示一个字符,然后再加循环显示字符串。这应该也符合从简单到复杂的原则吧,但是楼主的程序一个字符也显示不出来,楼主应该找找原因。
debug是调试汇编程序的必备工具,用debug调试一下就出来了,不能显示字符有两个需要注意下,一是字体的颜色(写进去了,但是颜色和背景一样,我们看来和没写一样) 。二是,字符是否写进去了,写到别处了自然也就看不到了。
tianlong1569
[第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系统下调试啊
deepblue
[第5楼]   [ 回复时间:2008-06-05 10:42 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51
楼主  mov ax,0b8a0H ;set display row 
这句代码是干啥用的???
deepblue
[第6楼]   [ 回复时间:2008-06-05 10:45 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51
;也是什么信息都没有 不知道为什么,是不是不能在xp系统下调试啊

???

我试了一下,有啊 红底绿字一个1,在第16行第一列
tianlong1569
[第7楼]   [ 回复时间:2008-06-05 12:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11
回复:[第6楼]
------------------
在我的系统是怎么不行呢
我知道这个一定行,可是在我的系统是怎么能运行呢,一运行马上就退出了,跟就不显示信息
tianlong1569
[第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下不能运行
peterhui
[第9楼]   [ 回复时间:2008-06-08 22:28 ]   [引用]   [回复]   [ top ] 
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04
如果直接执行  

C:\>a.exe 

C:\> 
也是什么信息都没有 不知道为什么,是不是不能在xp系统下调试啊
------------------
楼主所谓的直接执行是这样的吗?不会是你没有输入C:\>debug a.exe
那前几章的程序是如何debug 跟踪的?
tianlong1569
[第10楼]   [ 回复时间:2008-06-09 09:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11
是的
通过debug跟踪可以一个字一个字的显示出来,我想看看整体显示的效果
不知道怎么办
peterhui
[第11楼]   [ 回复时间:2008-06-09 10:28 ]   [引用]   [回复]   [ top ] 
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04
C:\>debug a.exe
然后用反汇编查看”mov ax,4c00h“此句在什么位置,我查了一下在“0038”
最后输入“g 38"就会显示啦。
楼主好像对前面的知识掌握不深呢
leeyeye
[第12楼]   [ 回复时间:2008-06-09 14:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2008-02-23 16:11
跟我的情况一样,直接运行exe文件test9c.exe什么反映都没有,就象没有运行任务命令一样。
tianlong1569
[第13楼]   [ 回复时间:2008-06-18 15:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:14
注册日期:2008-05-09 13:11
此贴由 贴主 于 [ 2008-06-18 15:12 ] 结贴。 结贴原因:问题已解决
得分情况: 11楼(peterhui):24分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved