微机原理课程设计 跪求大神帮忙!!

.MODEL SMALL
.STACK 100H
.DATA
KEY_IN1_MAX DB 64
DB 0
KEY_IN1_BUF DB 64 DUP('$')
PROMPT_1 DB 10, 13, 'input string:', 10, 13, '$'
PROMPT_2 DB 10, 13, 'output string:', 10, 13, '$'
.CODE
start:
MOV AX, @DATA
MOV DS, AX
MOV DX, OFFSET PROMPT_1
MOV AH, 09H
INT 21H
MOV DX, OFFSET KEY_IN1_MAX
MOV AH, 0AH ;输入数组
INT 21H

MOV DX, OFFSET PROMPT_2
MOV AH, 09H ;输出提示
INT 21H
;--------------------------------------------
MOV CL, [KEY_IN1_MAX + 1]
MOV CH, 0 ;CX=元素个数
DEC CX ;减1为外循环次数
OUTLP:
MOV BX, OFFSET KEY_IN1_BUF
PUSH CX ;保存外循环次数
MOV DX, 0 ;没有交换的标志
INLP:
MOV AL, [BX] ;取前一个
CMP AL, [BX + 1] ;和后一个比较
JNA NEXT ;前不大于后转移
XCHG AL, [BX + 1] ;否则进行交换
MOV [BX], AL
MOV DX, 1 ;标志置一
NEXT:
INC BX ;下一元素
LOOP INLP ;内循环尾
CMP DX, 0
JZ OUPUTING
POP CX ;恢复外循环次数
LOOP OUTLP ;外循环尾
;--------------------------------------------
OUPUTING:
MOV DX, OFFSET KEY_IN1_BUF
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
END start
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-19
用循环比较程序就可以啦。
第2个回答  2012-10-21
DATA SEGMENT
MSG1 DB 0AH,0DH,'Please enter the string:',0AH,0DH,'$'
MSG2 DB 0AH,0DH,'The result is',0AH,0DH,'$'
MSG3 DB 0AH,0DH,'Press enter to exit!',0AH,0DH,'$'
BUF DB 100
DB ?
DB 100 DUP(0)
DATA ENDS
STACK SEGMENT
DB 100H DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,100H

MOV DX,OFFSET MSG1
MOV AH,9
INT 21H

MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H

MOV SI,OFFSET BUF
MOV CL,[SI+1]
XOR CH,CH
ADD SI,2
LP: MOV AL,[SI]
CMP AL,41H
JB NEXT
CMP AL,5AH
JNA CHANGE
CMP AL,61H
JB NEXT
CMP AL,7AH
JNA CHANGE
JMP NEXT

CHANGE:
CMP AL,61H
JNB CH2
CH1: ADD AL,4
CMP AL,5AH
JNA NEXT
SUB AL,1AH
JMP NEXT

CH2: ADD AL,4
CMP AL,7AH
JNA NEXT
SUB AL,1AH

NEXT:MOV [SI],AL
INC SI
LOOP LP

MOV BYTE PTR [SI],24H
MOV DX,OFFSET MSG2
MOV AH,9
INT 21H
MOV DX,OFFSET BUF
ADD DX,2
MOV AH,9
INT 21H

MOV DX,OFFSET MSG3
MOV AH,9
INT 21H

EX: MOV AH,7
INT 21H
CMP AL,0DH
JNZ EX
MOV AH,4CH
INT 21H
CODE ENDS
END START
第3个回答  2012-10-24
在网上找