注册 登录
编程论坛 汇编论坛

[求助]一个程序出问题了!

小乖向前冲 发布于 2007-06-15 00:44, 566 次点击

从键盘输入0-20之间一个自然数N,将其平方值送显示器.
例如:提示:
INPUT BYTE BCD:
输入:9
输出:81

stack segment stack'stack'
dw 32 dup(0)
stack ends
data segment
INPUT DB'PLEASE INPUT N(0-2O):$'
LFB DB'0$ 1$ 4$ 9$ 16$ 25$ 36$ 49$ 64$ 81$ 100$ 121$ 144$ 169$ 196$ 225$ 256$ 289$ 328$ 361$ 400$'
N DW 6,0,6 DUP(0)


data ends
code segment
begin proc far
assume ss: stack,cs: code,ds: data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax

MOV DX,OFFSET INPUT
MOV AH,9
INT 21H
MOV DX,OFFSET N
MOV AH,10
INT 21H

MOV AX,WORD PTR N
AND AX,0F0FH
MOV CL,2
SHL AH,1
MOV BYTE PTR N,AH
SHL AH,CL
ADD AH,BYTE PTR N
ADD AL,AH

SHL AL,CL
MOV AH,0
ADD AX,OFFSET LFB
MOV AH,9
INT 21H


ret
begin endp
code ends
end begin

程序运行出现乱码 是哪的问题啊 高手指点下 谢谢哦

2 回复
#2
爱以走远2007-06-15 12:44

你的程序都是错的
我不知道你为什么要这样做
可以直接乘就行拉撒

#3
小乖向前冲2007-06-15 13:39

谢谢你哦 我把程序改了下 我用的查表法做的 现在是不出现乱码了 但是调用不出LFB中的结果
stack segment stack'stack'
dw 32 dup(0)
stack ends
data segment
INPUT DB'PLEASE INPUT N(0-2O):$'
LFB DB '0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400'
N DW 6,0,6 DUP(?)


data ends
code segment
begin proc far
assume ss: stack,cs: code,ds: data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax

MOV DX,OFFSET INPUT
MOV AH,9
INT 21H
MOV DX,OFFSET N
MOV AH,10
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H

MOV AX,WORD PTR N
AND AX,0F0FH
MOV CL,2
SHL AH,1
MOV BYTE PTR N,AH
SHL AH,CL
ADD AH,BYTE PTR N
ADD AL,AH


SHL AL,CL
MOV AH,0
ADD AX,OFFSET LFB
MOV AH,9
INT 21H


ret
begin endp
code ends
end begin

1