主题:【求助】奇怪的显示信息?
simaguang66666
[专家分:0] 发布于 2007-03-04 07:13:00
源程序如下:
dseg segment
a db 50
b db 60
dseg ends
cseg segment
assume ds:dseg,cs:cseg
mov al,a
add al,b
mov dl,al
mov ah,2
int 21h
mov ax,4c00h
int 21h
cseg ends
end
汇编和连接都没问题,但最后出现在显示屏上的结果不是110,好像是一个百分号,但又不是很像,接着我用ViasualASM运行,程序没有任何问题,但是运行程序的时候,窗口一闪而过,看不到结果,到底怎么回事?
回复列表 (共4个回复)
沙发
chenzep [专家分:3640] 发布于 2007-03-04 12:25:00
要输出110,必须要打印3个字符:1,1,0.
而你打印的是一个字符,这个字符的ASCII值是110.
想下他们的区别。
板凳
simaguang66666 [专家分:0] 发布于 2007-03-04 22:26:00
[quote]要输出110,必须要打印3个字符:1,1,0.
而你打印的是一个字符,这个字符的ASCII值是110.
想下他们的区别。[/quote]
多谢,懂了,另外我忘了给段寄存器赋初值
让我想想该怎么样输出1,1,0……
3 楼
simaguang66666 [专家分:0] 发布于 2007-03-04 23:32:00
我把代码改了:
dseg segment
a db '50'
b db '60'
ab db '000','$'
dseg ends
cseg segment
assume ds:dseg,cs:cseg
start:
mov ax,dseg
mov ds,ax
lea si,a+1
lea di,b+1
lea bx,ab+2
clc
mov ah,0
mov al,[si]
add al,[di]
aaa
mov [bx],al
dec si
dec di
dec bx
mov ah,0
mov al,[si]
adc al,[di]
aaa
mov [bx],al
dec bx
mov [bx],ah
lea dx,ab
mov ah,9
int 21h
mov ax,4c00h
int 21h
cseg ends
end start
但是最后屏幕上显示的是2个圆圈笑脸……
4 楼
simaguang66666 [专家分:0] 发布于 2007-03-06 19:43:00
哦,知道为什么了,加上这3行:
or ab,30h
or ab+1,30h
or ab+2,30h
我来回复