标题:求助:修改下这个小程序
只看楼主
zhh8896416
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-7
 问题点数:0 回复次数:7 
求助:修改下这个小程序

15*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行的相邻两个字符之间用空白符(ASCII0)隔开。




MMUL MACRO REG1
LEA DX,REG1
MOV AH,9H
INT 21H
ENDM
DATA SEGMENT
A1 DB '[BX]''0'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,9H
MOV DI,15
LOP: MOV CX,15
INC BX
MMUL A1
LOOP LOP
MOV DX,13H
MOV AH,02H
INT 21H
DEC DI
JNZ LOP
MOV AH,4CH
INT 21H
CODE ENDS
END START


我是初学者。。程序写成了这个样子。。但没能达到效果。。不知道错误出在那里。。请各位帮忙指正。。谢谢!!
搜索更多相关主题的帖子: Roman Times face 
2006-06-07 19:45
zhh8896416
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-7
得分:0 
补充下:我用的汇编软件报错说是:“NO STACK!”没有堆栈?但我不懂。。希望大家指点。。
2006-06-07 19:48
notepaper
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-6-5
得分:0 
MMUL MACRO REG1
MOV DX,REG1
MOV AH,2
INT 21H
ENDM
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,0FH
MOV DI,15
LOP: MOV CX,15
LOP1: INC BX
MMUL BX
MOV DL,0
MOV AH,02H
INT 21H
LOOP LOP1
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DX,0DH
MOV AH,02H
INT 21H
DEC DI
JNZ LOP
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

关于“NO STACK!”没有堆栈,可以在最前面加
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS
这个我也不是太清楚

2006-06-08 00:02
zhh8896416
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-7
得分:0 

非常感谢这位朋友的帮忙!!
看了你的程序才发现我有很多地方犯了很多“低级”错误。。希望高手们不要笑话。。
不过我正在努力学习汇编。。

在这里我继续提一个问题。。我在编另一个程序的时候又遇到麻烦咯。。程序的输出部分我老是改不正确。。尝试了几种方法还是失败了。。
而且也不太确定前面的程序有没有编错。。
下面是我的程序主题。。还请大家帮忙找找有没有错。。(估计都有。。呵呵)另外也帮我想一下输出部分应该怎么做呢。。

有10个学生的成绩分别为76,69,84,90,73,88,99,63,100,80,试编制一个程序分别统计60-69分,70-79分,80-89分,90-99分及100分的人数,并将结果以十进制形式分别显示出来。

DATA SEGMENT
ADDR DB 4CH,45H,54H,5AH,49H,58H,63H,3FH,64H,50H
A1 DB '得60~69分的人数有:$'
A2 DB '得70~79分的人数有:$'
A3 DB '得80~89分的人数有:$'
A4 DB '得90~99分的人数有:$'
A5 DB '得100分的人数有:$'
C1 DB 0
C2 DB 0
C3 DB 0
C4 DB 0
C5 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV CX,10
LEA SI,ADDR
LOP: MOV AX,[SI]
CMP AX,46H
JNL NEXT2
JMP B1
NEXT2: CMP AX,50H
JNL NEXT3
JMP B2
NEXT3: CMP AX,5AH
JNL NEXT4
JMP B3
NEXT4: CMP AX,64H
JZ B5
JMP B4
B1: INC C1
INC SI
LOOP LOP
JMP OVER
B2: INC C2
INC SI
LOOP LOP
JMP OVER
B3: INC C3
INC SI
LOOP LOP
JMP OVER
B4: INC C4
INC SI
LOOP LOP
JMP OVER
B5: INC C5
INC SI
LOOP LOP
JMP OVER
OVER: 这个部分改来改去也不对。。郁闷咯。。呵呵。。还请大家帮个忙。。这里是程序输出结果。。
CODE ENDS
END START

2006-06-08 07:28
notepaper
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-6-5
得分:0 

真是痛苦,运行了多遍,发现[SI]的值总是错的,后来才看到少了
MOV AX,DATA
MOV DS,AX
另外好像不能显示中文,总之我也是初学者.

STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS

DATA SEGMENT
R1 DB 4CH,45H,54H,5AH,49H,58H,63H,3FH,64H,50H
A1 DB '60~69: ',0AH,0DH
A2 DB '70~79: ',0AH,0DH
A3 DB '80~89: ',0AH,0DH
A4 DB '90~99: ',0AH,0DH
A5 DB '100: ',0AH,0DH,'$'
C1 DB 0
C2 DB 0
C3 DB 0
C4 DB 0
C5 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI, OFFSET R1
LOP: MOV AL,[SI]
CMP AL,46H
JNL NEXT2
JMP B1
NEXT2: CMP AL,50H
JNL NEXT3
JMP B2
NEXT3: CMP AL,5AH
JNL NEXT4
JMP B3
NEXT4: CMP AL,64H
JZ B5
JMP B4
B1: INC C1
INC SI
LOOP LOP
JMP OVER
B2: INC C2
INC SI
LOOP LOP
JMP OVER
B3: INC C3
INC SI
LOOP LOP
JMP OVER
B4: INC C4
INC SI
LOOP LOP
JMP OVER
B5: INC C5
INC SI
LOOP LOP

OVER: MOV AL,C1
ADD AL,30H
MOV A1+6,AL
MOV AL,C2
ADD AL,30H
MOV A2+6,AL
MOV AL,C3
ADD AL,30H
MOV A3+6,AL
MOV AL,C4
ADD AL,30H
MOV A4+6,AL
MOV AL,C5
ADD AL,30H
MOV A5+6,AL
LEA DX,A1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START


2006-06-08 13:09
zhh8896416
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-7
得分:0 

啊。。。真是太好了。。刚才我还在一直改程序。。不过一直没成效。。正要抓狂了。。无意刷新下论坛就看到你的回复。。你可是救了一个崩溃边缘的祖国大好青年哦。。

恩。。我马上认真学习你给的程序。。看看到底要怎么才能把这个程序摆平。。呵呵。。

2006-06-08 13:28
zhh8896416
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-7
得分:0 
认真看过程序了。。
你的这个程序给我了很大的启示。。特别是在寻址放数据这个地方。。一开始我一直看不懂 “ MOV A3+6,AL ”是什么意思。。而且还在迷惑你怎么只用了一次9号中断就把我辛苦的用几次调用宏或者其他笨方法显示输出结果这个问题给搞定了。。 当真正理解了 “ LEA DX,A1 MOV AH,9 ” 的时候才恍然大悟。。这样表达真是太妙了。。
除了这个以为还通过你的程序理解了不少的东西。。这次收获挺大的。。谢谢了。。

2006-06-08 13:57
notepaper
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-6-5
得分:0 

哈哈,我也是在学习,一边看别人的程序,一边自己学,不懂的地方还要问班里那些的强人.


2006-06-08 16:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-70455-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.326662 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved