怎么没有输出结果

lifangfang0712 2008-05-31 08:54:50
stack segment stack
stack ends
data segment
ALout db 'Please putin a Dnum:',0ah,0dh,24h
crlf db 0ah,0dh,24h
string db 30
db 0
db 30 dup('$' )
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov dx,offset ALout
mov ah,09h
int 21h

mov ah,0ah
int 21h


mov ah,09h
mov dx,offset crlf
int 21h
mov bx ,offset string
mov ax ,[bx+2]
mov bl,al
mov cl,4
shr al,cl
add al,30h
mov dl,al
mov ah,02h
int 21h

mov ah,09h
mov dx,offset crlf
int 21h

or bl,0fh
add bl,30h
mov dl,bl
mov ah,02h
int 21h
code ends
end start





...全文
135 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyg138 2008-05-31
  • 打赏
  • 举报
回复
收下你的谢谢了.
在xp下,如果没有这
mov ah,1
int 21h
mov ah,4ch
int 21h
就会一闪而关掉窗口,而且出错.
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
mov ah,1
int 21h

mov ah,4ch
int 21h
code ends
end start
好像多了诶,嘿嘿
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
这回对了 ,谢谢你啊
dyg138 2008-05-31
  • 打赏
  • 举报
回复
没吃早饭啊。
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
没吃早饭啊,还是没到中午点就饿了呀,呵呵,你先吃饭去吧,我在看看
dyg138 2008-05-31
  • 打赏
  • 举报
回复
我试过了,"还不行我就去坐牢"上面那个才是正确的.
你记得要输入两位数字
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
嘿嘿,真的,我又重装了一遍,还是看不到结果,你试过了吗?
dyg138 2008-05-31
  • 打赏
  • 举报
回复
mov bl,ah ;第一个字符
应该是第二个字符,肚子饿得荒,写错了.
dyg138 2008-05-31
  • 打赏
  • 举报
回复
还不行我就去坐牢.
dyg138 2008-05-31
  • 打赏
  • 举报
回复
看不到输出?我明白了,试试这个:
stack segment stack
stack ends
data segment
ALout db 'Please putin a Dnum:',0ah,0dh,24h
crlf db 0ah,0dh,24h
string db 30 ;缓冲区最大字符数
db 0
db 30 dup('$' )
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov dx,offset ALout
mov ah,09h
int 21h

mov dx,offset string
mov ah,0ah
int 21h

;显示回车换行符
mov ah,09h
mov dx,offset crlf
int 21h


mov bx ,offset string
mov ax ,[bx+2];
mov bl,ah ;第一个字符
and al,0fh
add al,30h
mov dl,al
;显示dl中字符
mov ah,02h
int 21h


;显示回车换行符
mov ah,09h
mov dx,offset crlf
int 21h

and bl,0fh
add bl,30h
mov dl,bl
;显示dl中字符
mov ah,02h
int 21h
mov ah,1
int 21h
mov ah,4ch
int 21h
code ends
end start
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
是不是我装的文件不够,还是跟以前一样
dyg138 2008-05-31
  • 打赏
  • 举报
回复
不好意思,最后的
and al,0fh
add al,30h
mov dl,bl

应该是
and bl,0fh
add bl,30h
mov dl,bl
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
结果还是不行
还是看不到输出
dyg138 2008-05-31
  • 打赏
  • 举报
回复
上面是正确的,搞定.
mov ax ,[bx+2]
把输入的两位数字存入ax,al=个位,al=十位
如输入25
al=32,ah=35
注意al,ah高四位都是3,所以只要屏蔽掉高4位,
所以用and al,0fh,使高4位全0,
然后add al,30h就是得出数字的ascii码
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
我试一下,呵呵
dyg138 2008-05-31
  • 打赏
  • 举报
回复
stack segment stack
stack ends
data segment
ALout db 'Please putin a Dnum:',0ah,0dh,24h
crlf db 0ah,0dh,24h
string db 30 ;缓冲区最大字符数
db 0
db 30 dup('$' )
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov dx,offset ALout
mov ah,09h
int 21h

mov dx,offset string
mov ah,0ah
int 21h

;显示回车换行符
mov ah,09h
mov dx,offset crlf
int 21h


mov bx ,offset string
mov ax ,[bx+2];
mov bl,ah ;第一个字符
and al,0fh
add al,30h
mov dl,al
;显示dl中字符
mov ah,02h
int 21h


;显示回车换行符
mov ah,09h
mov dx,offset crlf
int 21h

and al,0fh
add al,30h
mov dl,bl
;显示dl中字符
mov ah,02h
int 21h
code ends
end start
lifangfang0712 2008-05-31
  • 打赏
  • 举报
回复
先谢谢你啊!
debugkkk 2008-05-31
  • 打赏
  • 举报
回复
学习,路过
dyg138 2008-05-31
  • 打赏
  • 举报
回复
不好意思,我再想想.
dyg138 2008-05-31
  • 打赏
  • 举报
回复
我试过了,2是可以输出的,但是到5时会发生异常.
or bl,0fh
应该是or bl,0f0h吧
加载更多回复(6)

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧