. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验10.1 显示字符串,为什么在第7行显示  [已解决] 回复[ 3次 ]   点击[ 550次 ]  
ztf770710
[帖 主]   [ 发表时间:2008-04-07 15:58 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h


show_str:push ax
push bx
push cx
push dx
push si
push es
mov ax,10
mul dh
add ax,0b800h
mov es,ax
mov ax,2
mul dl
mov bx,ax
mov al,cl
s:mov cl,[si]
mov ch,0
jcxz ok
mov dl,[si]
mov es:[bx],dl
inc bx
mov es:[bx],al
inc si
inc bx
jmp short s
ok:pop es
pop si
pop dx
pop cx
pop bx
pop ax
ret


code ends
end start
   我的问题是,此程序执行后,字符串显示在第7行。而给dh的是8,那么字符串应该在第9行(输入0为第1行)。为什么在第7行显示?
wdm
[第1楼]   [ 回复时间:2008-04-08 22:38 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
程序是没有问题的。
你要确定你的显示屏幕有没有发生滚屏?
wdm
[第2楼]   [ 回复时间:2008-04-08 22:40 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
1
2C:\MASM>a.exe
3
4C:\MASM>
5C:\MASM>
6C:\MASM>
7C:\MASM>
8C:\MASM>
9C:\MASM>me to masm!

这事我运行后的结果,第九行,没错。第一行cmd下开始一般都是空白的。
ztf770710
[第3楼]   [ 回复时间:2008-04-27 09:36 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01
此贴由 贴主 于 [ 2008-04-27 09:36 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved