鱼C论坛

 找回密码
 立即注册
查看: 2726|回复: 3

为什么我的程序不能将12666居中显示?

[复制链接]
发表于 2012-4-17 11:13:40 | 显示全部楼层 |阅读模式
1鱼币
assume ds:data,cs:code
data segment
     db 10 dup(0)
data ends
code segment
     start: mov ax,12666
            mov bx,data
            mov ds,bx
            mov si,0H
            call dtoc
            mov dh,0cH
            mov dl,25H
            mov cl,02H
            call show_str
   
   mov ax,4c00H
   int 21H
   
   ;名称:dtoc
      ;功能:将word型数据转变为表示十进制数的字符串,字符串以0结尾
      ;参数:(ax)=word型数据
   ;      ds:si指向字符串首地址
      ;返回:无      
      dtoc: push ax
         push bx
   push cx
   push dx
   push si
   push di
         mov di,0H
      mov bx,10
     d0: mov dx,0H
            div bx
   add dx,30H
            push dx
            inc  di
            mov cx,ax
            jcxz d1   
            jmp short d0
   
     d1: mov cx,di
  d2: pop dx
            mov [si],dl
            inc si
            loop d2
   mov dl,0
            mov [si],dl
   pop di
   pop si
   pop dx
   pop cx
   pop bx
   pop ax
   ret
   
   ;名称:show_str
   ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
   ;参数:(dh)=行号(取值范围0~24)
   ;      (dl)=列号(取值范围0~79)
            ;      (cl)=颜色
            ;      ds:si指向字符串的首地址
            ;返回:无
        show_str: mov ax,0b800H
                  mov es,ax
         mov al,0a0H
         mul dh
         mov di,ax
         mov al,02H
         mul dl
         mov bx,ax
         mov al,cl
   
               mov ch,0H
          s0:  mov cl,[si]
            jcxz s1
            mov es:[di][bx],cl
            mov es:01H[di][bx],al
            inc si
            add bx,02H
            jmp short s0   
          s1:  ret
code ends
end start
问题:我的程序无法居中显示12666?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-17 18:32:49 | 显示全部楼层
:dizzy: 你调试的步骤是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-18 18:23:13 | 显示全部楼层
对你的代码没有任何改动的 复制粘贴然后运行 结果正常在屏幕中显示了 绿色12666
E:\TEST\1>ml 1.asm
Microsoft (R) Macro Assembler Version 6.15.8803
        Patched for you by promethee [ECL] in the year 2001 - enjoy
Copyright (C) Microsoft Corp 1981-2000.  All rights reserved.

Assembling: 1.asm
                                     12666
Microsoft (R) Segmented Executable Linker  Version 5.60.339 Dec  5 1994
Copyright (C) Microsoft Corp 1984-1993.  All rights reserved.

Object Modules [.obj]: 1.obj
Run File [1.exe]: "1.exe"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment

E:\TEST\1>1.exe

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

使用道具 举报

发表于 2017-2-4 16:58:28 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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