回 帖 发 新 帖 刷新版面

主题:求一道汇编程序题!!!!急求!!

从键盘输入0-20之间一个自然数N,将其平方值送显示器.
例如:提示:
INPUT BYTE BCD:
输入:9
输出:81
是.ASM文件源文件程序能够运行成功的

回复列表 (共2个回复)

沙发

我自己写了上面这题的程序 不过在用MASM命令时提示是“Out of memory"编译不成功  请大家看一下是哪里出了问题

STACK        SEGMENT STACK 'STACK'
        DW 32 DUP(0)
STACK        ENDS
DATA        SEGMENT
OBUF1   DB'INPUT BYTE BCD:$'
N     DB  6,0,6 DUP(?)
N2      DB  5 DUP(?),'$'
TAB  DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,289,324 361,400
DATA        ENDS
CODE        SEGMENT
START        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 OBUF1
MOV  AH,9
INT  21H 
MOV DX,OFFSET N
MOV  AH,10
INT  21H 
MOV DL ,0AH
MOV AH,2
INT  21H
AND AL,0FH
MOV BX,OFFSET TAB
XLAT
MOV N2,AL
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
MOV DL,'='
INT 21H
MOV DL,N2
AND DL,0F0H
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,N2
AND DL,0FH
ADD,DL,30H
INT 21H             
RET
START    ENDP
CODE    ENDS
END START

板凳

程序的几个错误和问题:

  这个程序是自己编的,还是抄书的?代码是手工输入的,还是从原程序中粘过来的?

1。有几处明显得拼写错误:
   落了逗号,
   全角符号

2。语法错误:8bit无符号数最大到255,看看你的定义:
 “TAB  DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,289,324 361,400”
  自然编不过了。

3。用INT21 10 号功能实现输入时,并没有从缓冲区中取输入的字符,所以不管输入什么,运行结果总是相同的。

4。程序替你改了一下,可以计算0-9的平方,输入9以上的数,按现有逻辑,无法转化为正确的数。

以下为修改后的代码。


STACK        SEGMENT STACK 'STACK'
        DW 32 DUP(0)
STACK        ENDS
DATA        SEGMENT
OBUF1   DB  'INPUT BYTE BCD:$'
N       DB  6,0,6 DUP (?)
N2      DB  5 DUP(?),'$'
TAB     DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225
DATA        ENDS

CODE        SEGMENT
START        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 OBUF1
MOV  AH,9
INT  21H 

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

MOV DL ,0AH
MOV AH,2
INT  21H

MOV BX,OFFSET N
MOV AL,BYTE PTR [BX+2]
AND AL,0FH
MOV BX,OFFSET TAB
XLAT

MOV N2,AL

MOV AH,2
MOV DL,0AH
INT 21H

MOV DL,0DH
INT 21H

MOV DL,'='
INT 21H

MOV DL,N2
AND DL,0F0H
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,2
INT 21H

MOV DL,N2
AND DL,0FH
ADD DL,30H
INT 21H             

RET
START    ENDP
CODE    ENDS
END START

我来回复

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