| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 646 人关注过本帖
标题:求教汇编 错误 为什么回车换行变成0了
只看楼主 加入收藏
bbbwolfe
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-5-10
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
求教汇编 错误 为什么回车换行变成0了
include io32.inc
.data
msg1 byte ' | 0 1 2 3 4 5 6 7 8 9 A B C D E F ',0
msg2 byte '---+---------------------------------',0
dvar byte ' 20|',32 dup(?),13,10,' 30|',32 dup(?),13,10,' 40|',32 dup(?),13,10,' 50|',32 dup(?),13,10,' 60|',32 dup(?),13,10,' 70|',32 dup(?),13,10,0
.code
start:
  mov eax,offset msg1
  call dispmsg
  call dispcrlf
  mov eax,offset msg2
  call dispmsg
  call dispcrlf
  mov ebx,offset dvar
  mov eax,20h
  mov ecx,6
cell:
  add ebx,4
  mov edx,16
 again:  
  cmp edx,0
  jz done
  mov dword ptr [ebx],20h   
  inc ebx
  mov dword ptr [ebx],eax

  inc ebx
  inc eax
  dec edx
  jmp again
   
done:
  inc ebx
  inc ebx
loop cell
mov eax,offset dvar
call dispmsg



exit 0
end start


就是显示的时候只能显示第一行 而且后面的回车换行还有一个空格都变成0了

不知道为什么
搜索更多相关主题的帖子: include 
2011-12-05 12:52
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:10 
先把你的问题描述清楚
0.用的什么编译环境,看的哪本书,哪个例子
1.程序实现什么功能
2.遇到了什么问题
3.有没有自己调试过

技术问题,请不要以短消息方式提问
2011-12-05 13:03
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
程序代码:
    .model small
    .data
    msg1 db ' | 0 1 2 3 4 5 6 7 8 9 A B C D E F ',0dh,0ah,'$'
    msg2 db '---+---------------------------------',0,0dh,0ah,'$'
    dvar db ' 20|',32 dup(?),13,10
         db    ' 30|',32 dup(?),13,10
         db    ' 40|',32 dup(?),13,10
         db    ' 50|',32 dup(?),13,10
         db    ' 60|',32 dup(?),13,10
         db    ' 70|',32 dup(?),13,10,0
    .code
    dispmsg proc near;/*void dispmsg(IN register(DX)msg)*/
    mov  ah,9
    int  21h
    ret
    dispmsg endp
    main proc far
start:
      xor  ax,ax
    push ds
    push ax
    mov  ax,@data
    mov  ds,ax
    mov  dx,offset msg1
     call dispmsg        ;puts(msg1);
      mov  dx,offset msg2
      call dispmsg       ;puts(msg2);
      mov  bx,offset dvar;unsigned char *pvar = &dvar;
      mov  ax,20h        ;unsigned char ch = ' ';
      mov  cx,6          ;short int i = 6;
cell:
      add  bx,4          ;pvar += 4;
      mov  dx,16         ;short int j = 16;
again: 
      cmp  dx,0
      jz   done          ;if (j == 0) goto done;
      mov  word ptr [bx],20h
      inc  bx            ;*pvar++ = ' ';
      mov  word ptr [bx],ax
    inc  bx              ;*pvar++ = ch;
      inc  ax            ;ch++;
      dec  dx            ;j--;
      jmp  again         ;goto again;
done:
     inc  bx
      inc  bx            ;pvar += 2;
    loop cell            ;while (i--);
    mov  dx,offset dvar   
    call dispmsg         ;puts(dvar);
    ret
    main endp
    end start
我帮你改成16位的,你自己对照着再看看逻辑,你问题没描述清楚,我也不想细看你的逻辑

技术问题,请不要以短消息方式提问
2011-12-05 13:56
快速回复:求教汇编 错误 为什么回车换行变成0了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017235 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved