主题:求一道汇编程序题!!!!急求!!
xlxlxlxl8
[专家分:0] 发布于 2007-06-08 22:26:00
从键盘输入0-20之间一个自然数N,将其平方值送显示器.
例如:提示:
INPUT BYTE BCD:
输入:9
输出:81
是.ASM文件源文件程序能够运行成功的
回复列表 (共2个回复)
沙发
xlxlxlxl8 [专家分:0] 发布于 2007-06-11 00:15:00
我自己写了上面这题的程序 不过在用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
板凳
liangbch [专家分:1270] 发布于 2007-06-13 22:58:00
程序的几个错误和问题:
这个程序是自己编的,还是抄书的?代码是手工输入的,还是从原程序中粘过来的?
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
我来回复