鱼C论坛

 找回密码
 立即注册
查看: 2224|回复: 13

汇编实验中的一个有趣的问题

[复制链接]
发表于 2012-11-17 08:35:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实验是IBM-PC 汇编实验2.1
用表格显示ASCII
9(`LC2VL@][F`W~)TJ{_X33.jpg 程序在执行的时候理想中的显示形式


第一次程序执行完.jpg
返回dos后字符不能对齐


多次重复执行后.jpg


多次执行同一程序后第一次执行的程序的显示区域字符逐渐对齐
但最后一次的还是不会对齐
有没有大神知道其中的原理,求解啊
下面是源代码:

code segment para 'code'
assume cs:code
       
main proc far
        mov di,15                       
        mov dl,10h        ;设置初始字符
start:                                  ;        设置内层循环,显示16个字符然后换行
        mov cx,16
a0:
        mov ah,02h
        int 21h
        push dx
        mov dl,0
        mov ah,02h
        int 21h
        pop dx
        inc dl
        loop a0
        push dx
       
        mov dl,0ah
        mov ah,02h
        int 21h
        pop dx
       
        dec di
        cmp di,0
        ja start
       
        ;mov ah,01h    ;调试时使用,使程序停留,否则返回dos后程序显示区域会变化
        ;int 21h
       
        mov ax,4c00h
        int 21h
        main endp
code ends
end main
       

最后一次执行的显示.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-19 14:37:00 | 显示全部楼层
不要沉啊,求解啊~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-19 21:13:38 | 显示全部楼层
你好,调试了好久,终于看出了点小问题,你只换了行,没有加回车!回车的ASCII码是D,请再试试看!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-19 21:19:34 | 显示全部楼层
未命名.jpg 你的源码在我这显示是这个样子的

加入回车后是:
未命名.jpg
push dx
        mov dl,0dh;<-----
        mov ah,02h;<-----
        int 21h        ;<-----
        mov dl,0ah
        mov ah,02h
        int 21h
很希望和你多交流!!
        
未命名.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-19 21:34:10 | 显示全部楼层
code segment para 'code'
assume cs:code

main proc far
mov di,15 
mov dl,10h ;设置初始字符
start: ; 设置内层循环,显示16个字符然后换行
mov cx,16
a0:
mov ah,02h
int 21h
push dx
mov dl,0
mov ah,02h
int 21h
pop dx
inc dl
loop a0 

push dx 
mov dl,0dh
mov ah,02h
int 21h 
mov dl,0ah
mov ah,02h
int 21h 

pop dx

dec di
cmp di,0
ja start

mov ah,01h ;调试时使用,使程序停留,否则返回dos后程序显示区域会变化
int 21h

mov ax,4c00h
int 21h
main endp
code ends
end main
未命名.jpg
刚忘了发DEBUG的图了~嘿嘿!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-19 21:58:19 | 显示全部楼层

在debug中运行时是没有问题的,第一张图是没有错误的,然后程序返回dos后,显示的内容就不能对齐了,不知道原理是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-19 22:50:17 | 显示全部楼层
ACC 发表于 2012-11-19 21:58
在debug中运行时是没有问题的,第一张图是没有错误的,然后程序返回dos后,显示的内容就不能对齐了,不知 ...

如果你的源码和贴出来的一样,那可能就会有问题。。。你的mov dl,0ah是换行,目视你用的是WIN7。XP下定会和我的图一样,没回车!!所以,差别非常大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-19 23:40:34 | 显示全部楼层
s0512 发表于 2012-11-19 22:50
如果你的源码和贴出来的一样,那可能就会有问题。。。你的mov dl,0ah是换行,目视你用的是WIN7。XP下定会 ...

其实问题所在是debug下显示和dos下显示的区别~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-20 00:15:28 | 显示全部楼层
ACC 发表于 2012-11-19 23:40
其实问题所在是debug下显示和dos下显示的区别~~

我调试用的是EMU8086....最后用的是DEBUG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-20 06:37:22 | 显示全部楼层
s0512 发表于 2012-11-20 00:15
我调试用的是EMU8086....最后用的是DEBUG

是软件吗?没有用过:lol,生成exe后运行,不用返回吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-20 08:06:19 | 显示全部楼层
ACC 发表于 2012-11-20 06:37
是软件吗?没有用过,生成exe后运行,不用返回吗?

是软件!学习汇编必备神器!!用了就知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-20 08:10:25 | 显示全部楼层
这个问题解决了吗?
是如何解决的啊?{:7_153:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-20 11:20:17 | 显示全部楼层
s0512 发表于 2012-11-20 08:10
这个问题解决了吗?
是如何解决的啊?

代码实木有问题滴,只不过我想知道为什么在程序返回dos时,显示区字符大小以及位置会变化~~这个问题是很有意思的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-20 11:24:06 | 显示全部楼层
ACC 发表于 2012-11-20 11:20
代码实木有问题滴,只不过我想知道为什么在程序返回dos时,显示区字符大小以及位置会变化~~这个问题是很有 ...

你把QQ发站内信息给我。。。交流下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 10:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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