回 帖 发 新 帖 刷新版面

主题:关于回车换行

code segment
 assume cs:code
 start:
   mov ah,1
   int 21h
   add al,2
   mov dl,0ah
   mov ah,2
   int 21h
   mov dl,al
   mov ah,2
   int 21h
   mov ah,4ch
   int 21h
 code ends
  end start

这个代码是输入一个数 加2 后在输出结果,要换行输出,为什么不成功呢??哪里出错了??

回复列表 (共7个回复)

沙发

dos/windows的换行符包含了回车和换行,在输出0ah后,还需要再加上输出一个0dh。

板凳

我改了下,
   在输出0ah后加了个0dh,换行是换了但是没有输出最后的al
code segment
 assume cs:code
 start:
   mov ah,1
   int 21h
   add al,2
   mov dl,0ah
   mov ah,2
   int 21h
   mov dl,0dh
   mov ah,2
   int 21h
   mov dl,al
   mov ah,2
   int 21h
   mov ah,4ch
   int 21h
 code ends
  end start
麻烦楼上大哥 能不能帮我改下嘛, .

3 楼

code segment
 assume cs:code
 start:
   mov ah,1
   int 21h
   add al,2    
   mov bl,al


   mov dl,0ah
   mov ah,2
   int 21h

   mov dl,0dh
   mov ah,2
   int 21h

   mov dl,bl
   mov ah,2
   int 21h
   mov ah,4ch
   int 21h
 code ends
  end start

4 楼

谢谢楼上大哥,
   通过了,呵呵!!  但是为什么要把  AL 的值放到其他地方呢,是不是因为中间的换行后,不能在执行  mov dl,al ??

5 楼

中断调用有可能会改变AX里的值。经常碰到。

6 楼

中断调用有可能会影响寄存器的值

7 楼

楼上大哥们,
   老师讲中断就是调用子程序.  那么上面的这些:
mov dl,0ah
   mov ah,2
   int 21h
 也能算是一个子程序了??

我来回复

您尚未登录,请登录后再回复。点此登录或注册