【问题标题】:How to take input 8 bit binary and convert into ASCII in emu8086 Assembly Language如何在emu8086汇编语言中输入8位二进制并转换为ASCII
【发布时间】:2021-04-16 15:59:12
【问题描述】:

我想从用户那里获取输入并打印相应的 Ascii 值。这可能类似于this 但是我正在寻找emu8086 上的特定代码。
输入:01000001
输出A
输入:00110000
输出0

【问题讨论】:

  • 链接问题中的代码适用于emu8086。 rotate-through-carry 和常规旋转都存在于原始 8086 中。

标签: assembly ascii emu8086


【解决方案1】:

这可能对你有帮助

include 'emu8086.inc' 
.model small
.stack 100h

.data
n_line db 0ah,0dh,"$"  ;for new line
msg1 db "input : $" 
msg2 db 0ah,0dh,"Outpur : $"
msg3 db 0ah,0dh,"invalid input given. $"  
i db ?

.code
main proc
    mov ax,@data
    mov ds,ax

@infinite:  
    mov i,0d           ;for infinite process i=0 at initialization
         
    lea dx,msg1   
    mov ah,09
    int 21h 

                       ;clear bx register
    xor bx,bx          ;XOR operation with self will always produce 0    
        
    
    mov ah,1
    @input:            
        int 21h        
        
        cmp al,50      ;check for input only 0 and 1
        jge @invalid
        cmp al,48
        jl @invalid
                       ;65d = 01000001 
        and al,0Fh     ;0Fh = 00001111
                       ;AND = 01000001
        shl bx,1
        or bl,al       ;store al data at LSB of BL register 
                 
        inc i
        cmp i,8d
        jl @input
        jge @next_step
    
    @next_step:   
        lea dx,msg2   
        mov ah,9
        int 21h
         
        mov dl,bl       ;print Ascii value
        mov ah,2
        int 21h  
        
        lea dx,n_line   ;for new line
        mov ah,9
        int 21h  
        
        jmp @infinite
            
         
@stop:       
    mov ah,4ch
    int 21h
    main endp
@invalid:
    lea dx,msg3
    mov ah,9
    int 21h
    jmp @stop
end main

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2017-04-07
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多