鱼C论坛

 找回密码
 立即注册
查看: 2861|回复: 5

为什么这个程序一运行cmd就死机了???

[复制链接]
发表于 2012-3-13 16:36:33 | 显示全部楼层 |阅读模式
2鱼币
assume cs:code
data segment
     db "welcome to masm!",0
data ends
code segment
start:mov ax,cs
      mov ds,ax
      mov bx,offset xian
   mov ax,0
   mov es,ax
   mov si,200h
   mov cx,offset s-offset s1;长度
   cld
   rep movsb
   
   mov ax,0
   mov es,ax
   mov word ptr es:[7ch*4],200h
   mov word ptr es:[7ch*4+2],0
   
xian: mov ax,0b800h
   mov es,ax
   mov di,10*0a0h+10
   mov cl,2
s:   mov dl,cl
      mov al,ds:[bx]
   mov es:[di],al
   mov es:[di+1],cl
   mov cl,al
   mov ch,0
   jcxz ok
   inc bx
   add di,2
   mov cl,dl
   jmp short s
   
ok:  mov ax,4c00h
     int 21h
s1:  nop
code ends
end start  

最佳答案

查看完整内容

mov di,10*0a0h+10 像这种 既然你用了10进制 就别后面跟16进制的数 start:mov ax,cs mov ds,ax mov bx,offset xian mov ax,0 mov es,ax mov si,200h mov cx,offset s-offset s1;长度 X cld rep movsb movsb 将ds:[si]的内容复制到es:[di] 这个请仔细看下11.10章 mov ax,0 mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-13 16:36:34 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-3-13 20:17 编辑

mov di,10*0a0h+10     像这种 既然你用了10进制 就别后面跟16进制的数



start:mov ax,cs
      mov ds,ax
      mov bx,offset xian
   mov ax,0
   mov es,ax
   mov si,200h
   mov cx,offset s-offset s1;长度  X
   cld
   rep movsb

movsb  将ds:[si]的内容复制到es:[di]  这个请仔细看下11.10章
mov ax,0
   mov es,ax
   mov word ptr es:[7ch*4],200h
   mov word ptr es:[7ch*4+2],0      

  这里就是你程序为什么不结束的原因后面的结束语句没有加上
mov ax,4c00h
   int 21h


xian: mov ax,0b800h
   mov es,ax                               这一段问题很大啊

   mov di,10*0a0h+10  
   mov cl,2
s:   mov dl,cl          循环 位置设置问题  
      mov al,ds:[bx]
   mov es:[di],al
   mov es:[di+1],cl
   mov cl,al
   mov ch,0     判断是否为0应该在循环开始就进行判断
   jcxz ok
   inc bx
   add di,2
   mov cl,dl     这句话完全没必要 你都已经吧CL 给dl 了  CL 要去进行为0判断 这里在给赋值回去干啥?
   jmp short s



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-13 21:01:11 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-3-13 21:04 编辑

assume cs:code

code segment
start:mov ax,cs
      mov ds,ax
      mov si,offset xian
   mov ax,0
   mov es,ax
   mov di,200h
   mov cx,offset s1-offset xian;长度
   cld
   rep movsb
   
   mov ax,0
   mov es,ax
   mov word ptr es:[7ch*4],200h
   mov word ptr es:[7ch*4+2],0
    mov ax,4c00h

        int 21h


xian: push ax
                push bx
                push cx
                push dx
                push si
                push di

mov ax,0b800h
   mov es,ax
   mov di,10*160+10
   
   mov cl,2
   mov dl,cl
s:     mov al,ds:[bx]
          mov cl,al
   mov ch,0
   jcxz ok
   mov es:[di],al
   mov es:[di+1],dl
   
   inc bx
   add di,2
   
   jmp short s
   
ok:  pop di
                pop si
                pop dx
                pop cx
                pop bx
                pop ax
                iret


mov ax,4c00h
     int 21h
s1:  nop
code ends
end start  





这是调用int 7ch

assume cs:code
data segment
     db 'welcome to masm!',0
data ends
code segment
start:  mov ax,data
     mov ds,ax
     mov bx,0
     int 7ch
     mov ax,4c00h
     int 21h
code ends
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-14 21:52:45 | 显示全部楼层

明白了,非常感谢,那个今天有点事,所以来迟了,不能评分了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-14 22:08:39 | 显示全部楼层
莫名其妙 发表于 2012-3-13 21:01
assume cs:code

code segment

哥们真厉害,佩服
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-15 08:31:45 | 显示全部楼层
格式天下 发表于 2012-3-14 22:08
哥们真厉害,佩服

我也掰持了1小时呢... 我机器上运行也有问题后来重启了才好!~

评分

参与人数 1鱼币 +5 收起 理由
格式天下 + 5 总之谢谢了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 13:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表