注册 登录
编程论坛 汇编论坛

自己看书.然后写了一个程序...但是有问题.要死机..请大家帮我看看.感激不尽....

andytony1234 发布于 2009-12-22 23:29, 1036 次点击
data segment
dw   0000h,0000h
data ends
code segment
assume cs:code,ds:data
start:    mov ax,data
    mov ds,ax
    mov bx,ds:[0]
    inc bx
    mov ds:[0],bx
    cmp bx,3
    ja  l1   
    mov dl,'o'
    int 21h
    jmp word ptr [bx+1]
l1:    mov dl,'k'
    int 21h

    mov ah,4ch
    int 21h
code ends
end start
8 回复
#2
andytony12342009-12-23 10:23
这个问题是这样的:
data segment
    ?
data ends
code segment
start:mov ax,data
      mov ds,ax
      mov bx,0
      jmp word ptr [bx+1]
code ends
end  start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该该定义哪些数据...上面,我为了要检测是否跳到第一条指令,所以在后面加了些输入的.东西..

今天早上我又改了下程序如下:
data segment
dw   0000h,0000h
data ends
code segment
assume cs:code,ds:data
start:    mov ax,data
    mov ds,ax
    mov bx,0
    mov ax,ds:[0]
    inc ax
    mov ds:[0],ax
   
    cmp ax,3
    ja  l1   
    mov dl,'o'
    int 21h
    jmp word ptr [bx+1]
l1:    mov dl,'k'
    int 21h

    mov ah,4ch
    int 21h
code ends
end start               结果说:CPU遇到无效指令了....
#3
andytony12342009-12-23 18:12
只有我自己再顶下了....人呢??高手呢...???
#4
philipyou2009-12-28 15:23
楼主程序的思路是没问题的
但输出‘O'‘K'的用法错了
    mov ah,02h
    mov dl,'o'
    int 21h
 
    mov ah,02h
    mov dl,'k'
    int 21h


这两段前面要加上红色字体的内容
#5
悔悔2009-12-29 00:03
我顺着思路运行,怎么不成功啊。
修改后的程序是这样吗??


data segment
dw   0000h,0000h
data ends
code segment
assume cs:code,ds:data
start:    mov ax,data
    mov ds,ax
    mov bx,0
    mov ax,ds:[0]
    inc ax
    mov ds:[0],ax
   
    cmp ax,3
    ja  l1
    mov  02h   
    mov dl,'o'
    int 21h
    jmp word ptr [bx+1]
l1:   mov  02h
     mov dl,'k'
    int 21h

    mov ah,4ch
    int 21h
code ends
end start           
#6
philipyou2009-12-29 13:18
是MOV AH,02H不是MOV 02H
#7
philipyou2009-12-29 13:20
是MOV AH,02H不是MOV 02H
#8
philipyou2009-12-29 13:22
是MOV AH,02H不是MOV 02H
#9
andytony12342009-12-30 11:13
这么多天,终于结了..原来是我忘了,mov ah,2...这个啊..唉..一时没发现,还搞了半天都没明白...真是谢谢楼上了...
1