编一个程序完成从键盘上输入一个4位的16进制数,并以八进制形式显示出来。

思路:
无论输入的是0123……abcdef,还是0123……ABCDEF都可以被解析为16进制字符


DATAS SEGMENT
    crlf db 0dh,0ah,24h 
DATAS ENDS

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

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov bx,0
    mov ch,4
    input:
    	mov ah,1
    	int 21h
    	cmp al,30h
    	jl exit
    	cmp al,3ah
    	jl next
    	cmp al,'A'
    	jl exit
    	cmp al,'f'
    	jg exit
    	cmp al,'F'
    	jbe A10
    	cmp al,'a'
    	jge A00	
    	jmp A20
    A00:
    	sub al,20h	;小写变大写
    A10:
    	sub al,7
    next:
    	sub al,30h
    	mov cl,4
    	shl bx,cl
    	mov ah,0
    	add bx,ax
    A20:
    	dec ch
    	jnz input
    	
    exit:
    	lea dx,crlf
    	mov ah,9
    	int 21h
    
    	mov ax,bx
    	mov si,8
    	mov cx,0
    rotate:
    	xor dx,dx
    	div si
    	push dx
    	inc cx
    	cmp ax,0
    	jnz rotate
    output:
    	pop dx
    	add dl,30h
    	mov ah,2
    	int 21h
    	loop output
    last:
    	mov dl,'o'		;八进制后缀
    	mov ah,2
    	int 21h
    	
   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值