这个程序能将输入的十进制数以 2,8,16进制输出
如果你连乘法都会做了 把这个代进去一部分应该不难吧
ASSUME CS:CODE,DS:DATA,SS:STACK
SHOW MACRO NUMB,ADDR,INTER
MOV AH,NUMB
LEA DX,ADDR
INT INTER
ENDM
DATA SEGMENT
MSG1 DB 13,10,"PLEASE INPUT A NUMBER : $"
SHEX DB 10,13,"HEX: $"
SBIN DB 10,13,'BIN: $'
SOCT DB 10,13,'OCT: $'
H10 DW 10
TEMP DW 0
DATA ENDS
STACK SEGMENT
DB 128 DUP (0)
TOS DB '$'
STACK ENDS
CODE SEGMENT
; \u5341\u516D\u8FDB\u5236\u8F6C\u6362\u516B\u8FDB\u5236,AX\u4F20\u53C2
CONVERTO PROC
MOV DX,0
MOV BX,8
MOV CX,0
LO:
DIV BX
ADD DX,30H
INC CX
PUSH DX
MOV DX,0
CMP AX,0
JNZ LO
OO:
POP DX
MOV AH,2
INT 21H
LOOP OO
RET
CONVERTO ENDP
;\u5341\u516D\u8FDB\u5236\u8F6C\u636216\u8FDB\u5236\u8F6C\u6362\u8F93\u51FA\u51FD\u6570\uFF0CBX\u4F20\u53C2
CONVERTH PROC
MOV CL,4
MOV CH,4
MOV DX,0
LH:
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JB NETH
ADD DL,7
NETH:
MOV AH,2
INT 21H
DEC CH
JNZ LH
RET
CONVERTH ENDP
;\u5341\u516D\u8FDB\u5236\u8F6C\u63622\u8FDB\u5236\u8F6C\u6362\u8F93\u51FA\u51FD\u6570\uFF0CAX\u4F20\u53C2
CONVERTB PROC
MOV CX,0
LB:
SHR AX,1
JC P1
MOV BX,30H
PUSH BX
JMP CONTB
P1:
MOV BX,31H
PUSH BX
CONTB:
INC CX
CMP AX,0
JNE LB
OB:
POP DX
MOV AH,2
INT 21H
LOOP OB
RET
CONVERTB ENDP
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOS
MOV DX,OFFSET MSG1
MOV AH,9
INT 21H
MOV BX,0
GET:
MOV AH,1
INT 21H
CMP AL,13
JE NEX
SUB AL,30H
MOV CH,0
MOV CL,AL
MOV AX,BX
MUL H10
ADD AX,CX
MOV BX,AX
JMP GET
NEX:
MOV TEMP,BX
SHOW 9,SBIN,21H
MOV AX,TEMP
CALL CONVERTB
SHOW 9,SOCT,21H
MOV AX,TEMP
CALL CONVERTO
SHOW 9,SHEX,21H
MOV BX,TEMP
CALL CONVERTH
MOV AX,4C00H
INT 21H
CODE ENDS
END START
#包括
无效的主要()
{
诠释x,A [32],i = 0;
printf的(“请输入一个十进制整数。\ N“);
scanf的(”%d“,&X);
(x! = 0)
{
一个[i + +] = X%2;
X = X / 2;
}
(I - I> = 0; I - )
printf的(“%d”,[]); BR /> printf(“请\ n”);
}