回 帖 发 新 帖 刷新版面

主题:用2号中断输出问题

我定义了一个空间,输入了两个字符,现在想把他们分别输出,也就是用2号功能输出,
但我编的不知道为什么,总是输出错误,
帮帮我吧!·
谢谢了…………
data segment
s1 db 3,?,3 dup(?)
s2 db "input:$"
hh db 10,13,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov dx,offset s2
mov ah,9
int 21h

mov dx,offset s1
mov ah,10
int 21h

lea dx,hh
mov ah,9
int 21h

mov ah,s1+2


add ah,30h
mov dl,ah            
mov ah,2
int 21h

mov al,s1+3
add al,30h
mov dl,al
mov ah,2
int 21h

mov ah,4ch
int 21h

code ends
end start

回复列表 (共4个回复)

沙发

add ah,30h
mov dl,ah            
mov ah,2
int 21h



mov al,s1+3
add al,30h
mov dl,al
mov ah,2
int 21h
中的ADD AH(AL),30H去掉
用10号调用本来存入的就是ASCII码,不用再加30h了
不知道是不是你要的结果

板凳


是我要得结果
谢谢呢
不过我还是不太明白
在什么情况下可以加30h
要是定义:
s db 2,1

mov dl,s
mov ah,2
int 21h
是不是必需加30h呢??
为什么??

3 楼

这个要加30H,因为所输入的2和1是以16进制的形式保存在计算机中的,而2号调用需要想要输出值的ASCII码,所以要加30H
而你上面的程序是使用了10号调用,计算机对它的处理是将所输入数据的ASCII码保存,所以输出时不用加30H了。

4 楼


可能懂了吧
好麻烦~!~!~
呵呵
谢谢~~~~~
有空请你吃饭啊~~~!~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册