.databcd1 db 9,0,9 dup(?)bcd2 db 9,0,9 dup(?)obuf1 db 'INPUT BCD1:$'obuf2 db 0dH,0aH,'INPUT BCD2:$'obuf3 db 0dH,0aH,'RESULT=$' .codestart proc .startup MOV DX ,OFFSET OBUF1 MOV AH,9 INT 21H mov Ecx,10 mov ebx,0 mov di,8read1: mov ah,1 int 21h and eax,0fh push eax mov eax ,ebx mul Ecx pop ebx add ebx ,eax dec di cmp di,0 jA read1 MOV DX ,OFFSET OBUF2 MOV AH,9 INT 21H mov edx,0 mov di,8read2: mov ah,1 int 21h and eax,0fh push eax mov eax ,edx mul Ecx pop edx add edx ,eax dec di cmp di,0 ja read2 cmp ebx,edx MOV SI,0 ja next1 MOV SI,1 xchg ebx,edxnext1: sub ebx,edx mov eax,ebx mov cx,0 mov ebx,10again:mov edx,0 div ebx push edx inc cx or eax,eax jnz again MOV DX ,OFFSET OBUF3 MOV AH,9 INT 21H CMP SI,1 JNZ NEXT2 MOV DL,'-' mov ah,2 int 21h NEXT2:lop: pop edx ADD DL,30H mov ah,2 int 21hloop lop .exitstart endp end; 6. 键盘输入一串(1~10个)十进制数字,分别以正序和反序,用分号分隔,分两行显示出来。;例如:输入:12345;输出:1;2;3;4;5 ; 5;4;3;2;1.model small .586 .stack 80 .dataIbuf db 11,0,11 DUP(?)obuf db 0dh,0ah,'$' .codestart proc .startup MOV DX,OFFSET IBUF MOV AH,10 INT 21H mov cl,ibuf+1 mov ch,0 sub cx,1 push cx MOV DI,OFFSET IBUF+2lop1: MOV DL,[DI] inc di mov ah,2 int 21h MOV DL,';' mov ah,2 int 21h loop lop1 MOV DL,[DI] mov ah,2 int 21h MOV Dx,offset obuf mov ah,9 int 21h pop cxlop2: MOV DL,[di] dec di mov ah,2 int 21h MOV DL,';' mov ah,2 int 21h loop lop2 MOV DL,[dI] mov ah,2 int 21h .exitstart endp end;7.键入一串(2~10个)无序的十进制数字,按降序(从大到小)排列后换行输出。;例如:提示:输入:29374;输出:97432.model small .586 .stack 80 .dataIbuf db 11,0,11 DUP(?)obuf db 0dh,0ah,'$' .codestart proc .startup MOV DX,OFFSET IBUF MOV AH,10 INT 21H mov cl,ibuf+1 mov ch,0 sub cx,1 mov bx,cx push cxlop: MOV DI,OFFSET IBUF+2 push cx inside : mov al,[di] cmp al,[di+1] ja next xchg al,[di+1] xchg al,[di] next: inc di loop inside pop cxloop lop MOV Dx,offset obuf mov ah,9 int 21h pop bx mov ibuf[bx+3],'$' MOV Dx,offset ibuf+2 mov ah,9 int 21h .exitstart endp end;8.键入一个字类型的原码数(符号数),在显示器的下一行输出其对应的补码数。;例如:提示:INPUT A WORD:;输入:8001;输出:FFFF.model small.586.stack 64h.dataobuf1 db 'INPUT A WORD:$'obuf2 db 0AH,0DH ,'$'IBUF dB 5,0,5 DUP(?).codebegin proc.startup mov dx,offset OBUF1 mov ah,9 int 21h mov dx,offset OBUF2 mov ah,9 int 21h mov dx,offset IBUF mov ah,10 int 21h MOV CX,4 MOV DI,OFFSET IBUF+2 MOV AX,0LOP1: MOV BL,[DI] INC DI CMP BL,'A' JB NEXT1 SUB BL,07HNEXT1:SUB BL,30H SHL AX,4 ADD AL,BL LOOP LOP1 MOV BX, AX AND BX,8000H JZ NEXT2 AND AX, 7FFFH NEG AXNEXT2:PUSH AX mov dx,offset OBUF2 mov ah,9 int 21h MOV CX,4 POP AX LOP2: ROL AX,4 PUSH AX AND AL,0FH CMP AL,10 JB NEXT3 ADD AL,7H NEXT3: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX LOOP LOP2.exitbegin endpend
2005年11月18日 04点11分
6