1 DATA SEGMENT
2
3
4 BUFF DB 300 DUP(?)
5 CRLF DB 0DH,0AH,24H
6
7
8 DATA ENDS ;数据段
9  STA SEGMENT STACK
10 DW 40H DUP(?)
11 TOP LABEL WORD
12 STA ENDS ;定义栈,现在这些数据还不是很懂,以后会加上的
13  
14 CODE SEGMENT
15 ASSUME CS:CODE,DS:DATA
16
17 MAIN PROC FAR
18 MOV AX,STA
19 MOV SS,AX
20 LEA SP,TOP
21 MOV AX,DATA
22 MOV DS,AX ; 赋初值阶段
23  
24 MOV CX,300 ;cx中存储字符的最大数目
25 MOV SI,0 ;负责计数
26 L2: MOV AH,1
27 INT 21H ;实现输入一个字符的功能
28
29
30 CMP AL,0DH
31 JE L3 ;判断是否回车,有回车就跳到l3行
32
33
34 MOV BUFF[SI],AL ;把输入的字符放到数据段中
35 INC SI
36 LOOP L2 ;返回l2重复输入字符,直到300个为止
37
38
39 L3:
40 MOV CX,SI ;注+si是16进制的,这个要十分的注意
41 DEC SI
42
43
44 MOV AH,9
45 LEA DX,CRLF ;实现回车换行
46 INT 21H
47
48
49 L5:MOV DL,BUFF[SI] ;反序输出阶段
50 MOV AH,2
51 INT 21H
52 DEC SI
53 LOOP L5
54
55
56 MOV AH,4CH
57 INT 21H
58
59 MAIN ENDP
60 CODE ENDS
61 END MAIN
62

 

 

 

   这个算法比较郁闷,不是很难,最先在回车换行那个地方郁闷了一阵子,只好改用其他方法了(老师那乌龙,可能把那个算法写漏了什么,呵呵)。初学汇编,很多的定义还不是很理解,特别是利用命令行进行编译的时候很是别扭!!

posted on 2010-03-29 23:37  KuSiuloong  阅读(258)  评论(0编辑  收藏  举报