程序代码:
;MASMPlus 代码模板 - 纯 DOS 程序
.model small
DATA SEGMENT
BUFFER DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
mov ax,DATA
mov ds,ax
MOV BL,2
LEA DI,BUFFER
INPUT:
MOV AH,01H
INT 21H ;输入第一个字符
SUB AL,30H ;将输入的数字减去30h
JL EXIT
CMP AL,0AH
JA EXIT
CMP BL,1
JE NEXT1
mov cl,bl
MOV BL,10
MUL BL ;十位上数乘以10
mov bl,cl
MOV [DI],AL
DEC BL
JNZ INPUT
NEXT1:
MOV BX,2
ADD [DI],AL
NEXT3:
MOV AL,[DI]
CMP BX,2
JL NEXT2
MOV cl,4
mov dl,al
SHR AL,cl ;左移四位,相当于:0000 xxxx (xxxx表对应原高四位二进制数)
NEXT2:
AND AL,0FH
cmp al,10d
jge CHAR
add al,30h
jmp OUTPUT
CHAR:
add al,55d
OUTPUT:
mov dl,ald
MOV AH,02H
INT 21H ;输出DL中内容
DEC BX
JNZ NEXT3
EXIT:
mov ah,4ch
int 21h
CODE ENDS
END START
好人做到底 这次改对了
不过 你的程序不怎么简练 有废话
还有 貌似都是用cx做计数器
循环中压栈费周期……
个人感觉 这种程序不用内存 直接用寄存器就行了
加油吧
[[it] 本帖最后由 zklhp 于 2008-10-26 10:13 编辑 [/it]]









