进制转换-汇编语言

输入一个十进制数(字类型),以十六进制的形式输出。

DATAS SEGMENT
    BUF DB 10,?,10 DUP('$')
    LEN EQU $-BUF
    ;JIEGUO DB 5;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    LEA DX,BUF
NEXT:     
	MOV BX,0    
	CALL INPUT     
	CALL OUTPUT     
	JMP NEXT 

INPUT PROC NEAR 
SHURU:
    MOV AH,01H
    INT 21H
	CBW;扩展     
	CMP AX,0DH     
	JE RETURN     
	CMP AX,'0'     
	JB EXIT     
	CMP AX,'9'     
	JA EXIT 
	CALL TRANSFORM     
	JMP SHURU 
RETURN:    
	RET ;回到主程序
INPUT ENDP 

TRANSFORM PROC NEAR     
	XCHG AX,BX   ;交换数据  
	SUB BX,30H    
	MOV CX,10     
	MUL CX     
	ADD AX,BX     
	XCHG AX,BX     
	RET 
TRANSFORM ENDP 
OUTPUT PROC NEAR     
	MOV DH,4     
	MOV CL,4 
CONTINUE:     
	ROL BX,CL  ;左移   
	MOV AL,BL     
	AND AL,0FH     
	CMP AL,9     
	JA ZIMU     
	ADD AL,30H     
	JMP SHUCHU     
ZIMU:     
	ADD AL,37H 

SHUCHU:     
MOV DL,AL     
MOV AH,02H     
INT 21H     
DEC DH     
CMP DH,0     
JNE CONTINUE 
	MOV DL,0AH
	MOV AH,02H
	INT 21H
	MOV	DL,0DH
	MOV AH,02H
	INT 21H
	RET 
	OUTPUT ENDP 
EXIT:	
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果图:

输入一个十进制数(字类型),以二进制的形式输出。

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
NEXT:
	MOV BX,0
	CALL INPUT
	CALL OUTPUT
	JMP NEXT
INPUT PROC NEAR
SHURU:
	MOV AH,01H
	INT 21H
	CBW
	CMP AX,0DH
	JE RETURN
	CMP AX,'0'
	JB EXIT
	CMP AX,'9'
	JA EXIT
	CALL TRANSLATE
	JMP SHURU
RETURN:
	RET
INPUT ENDP
TRANSLATE PROC NEAR
	XCHG AX,BX
	SUB BX,30H
	MOV CL,10
	MUL CL
	ADD AX,BX
	XCHG AX,BX
	RET
TRANSLATE ENDP
OUTPUT PROC NEAR
	MOV CX,16
CONTINUE:
	ROL BX,1
	MOV AL,BL
	AND AL,00000001H
	ADD AL,30H
SHUCHU:     
	MOV DL,AL     
	MOV AH,02H     
	INT 21H     
	DEC CX     
	CMP CX,0     
	JNE CONTINUE     
	MOV DL,0AH     
	MOV AH,02H     
	INT 21H     
	MOV DL,0DH     
	MOV AH,02H     
	INT 21H     
	RET 
OUTPUT ENDP
EXIT:
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果图:

输入一个十六进制数(字类型),以十进制的形式输出。

DATAS SEGMENT
    
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    CALL INPUT
    CALL OUTPUT
    JMP EXIT
INPUT PROC NEAR
SHURU:	
	MOV AH,01H
	INT 21H
	CBW
	CMP AX,0DH
	JE JIESHU
	CMP AL,'0'
	JB EXIT
	CMP AL,'9'
	JNA JIXU1
	CMP AL,'f'
	JA EXIT
	CMP AL,'a'
	JNB JISHU2
JIXU1:
	SUB AX,30H
	JMP JISUAN
JISHU2:
	SUB AX,57H
JISUAN:
	XCHG AX,BX
	MOV CX,16
	MUL CX
	ADD AX,BX
	XCHG AX,BX
	JMP SHURU
JIESHU:
RET
INPUT ENDP
OUTPUT PROC NEAR
	 MOV AX,BX     
	 MOV CX,10000     
	 MOV DX,0     
	 DIV CX     
	 MOV BX,DX     
	 ADD AL,30H     
	 MOV DL,AL     
	 MOV AH,02H     
	 INT 21H    
	 MOV AX,BX     
	 MOV CX,1000     
	 MOV DX,0     
	 DIV CX     
	 MOV BX,DX     
	 ADD AL,30H     
	 MOV DL,AL     
	 MOV AH,02H     
	 INT 21H     
	 MOV AX,BX     
	 MOV CX,100     
	 MOV DX,0     
	 DIV CX     
	 MOV BX,DX     
	 ADD AL,30H     
	 MOV DL,AL     
	 MOV AH,02H 
     INT 21H     
     MOV AX,BX     
     MOV CX,10     
     MOV DX,0     
     DIV CX     
     MOV BX,DX     
     ADD AL,30H     
     MOV DL,AL     
     MOV AH,02H     
     INT 21H     
     MOV AX,BX     
     MOV CX,1    
     MOV DX,0     
     DIV CX     
     MOV BX,DX     
     ADD AL,30H     
     MOV DL,AL     
     MOV AH,02H     
     INT 21H     
     MOV DL,0AH     
     MOV AH,02H     
     INT 21H     
     MOV DL,0DH     
     MOV AH,02H     
     INT 21H     
     RET 
OUTPUT ENDP 
     EXIT:   
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果图:

 

  • 8
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值