. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九我试着编写了一下,为什么不能输出到显示器上呢?求助  [待解决] 回复[ 4次 ]   点击[ 368次 ]  
10416500900
[帖 主]   [ 发表时间:2012-02-01 11:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-12-03 19:21
assume cs:a,ds:b

b segment
db'welcome to masm!'
b ends

a segment
sata:mov cx,16
mov ax,0b800h
mov es,ax
mov ax,b
mov ds,ax
mov ax,0
mov si,0
mov di,0

s:mov al,[si]
mov ah,02h
mov es:[di],ax
inc si
add di,2
loop s
mov ax,4c00h
int 21h

a ends
end sata
运行后应该在屏幕左上角输出绿色‘welcome to masm!'为什么什么反应都没有?
chinatree
[第1楼]   [ 回复时间:2012-02-01 13:18 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
你能先运行cmd吗?在cmd里再运行这个程序就应该没问题了,我想是因为黑窗口一闪而过你没来的及看。
10416500900
[第2楼]   [ 回复时间:2012-02-02 02:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-12-03 19:21
我是在cmd里运行的,运行后就立接返回到cmd了,看不到任何执行过程,没有显示器输出。
chinatree
[第3楼]   [ 回复时间:2012-02-02 09:37 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
我以前也有遇到,有2个办法:1,用debug加载它,然后用G命令运行,这样就显示出来了。2,在程序中加2行代码,在mov ax,4c00h
int 21h
前加上
mov ah,7
int 21h 
这两行,做用是按任意键退出,但是会使程序暂停。
tomato
[第4楼]   [ 回复时间:2012-02-04 11:04 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
楼主运行的时候是不是屏幕是满屏?如果是,那就是,已经显示出来了,然后滚屏了,将已经显示出来的东西覆盖了。因为你现在显示在屏幕的第一行,解决这个问题,就是将显示的位置向后挪几行。这样,滚屏之后,只会覆盖第一行,而不会覆盖到后面的行。另外一个办法就是,在显示之前清一下屏,然后,就不会滚屏,第一行就会显示出来而不会覆盖掉。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved