回 帖 发 新 帖 刷新版面

主题:【求助】奇怪的显示信息?

源程序如下:
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个回复)

沙发

要输出110,必须要打印3个字符:1,1,0.
而你打印的是一个字符,这个字符的ASCII值是110.
想下他们的区别。

板凳

[quote]要输出110,必须要打印3个字符:1,1,0.
而你打印的是一个字符,这个字符的ASCII值是110.
想下他们的区别。[/quote]
多谢,懂了,另外我忘了给段寄存器赋初值

让我想想该怎么样输出1,1,0……

3 楼

我把代码改了:

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 楼

哦,知道为什么了,加上这3行:
or ab,30h
or ab+1,30h
or ab+2,30h

我来回复

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