程序代码:
;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]]