【发布时间】:2021-04-16 15:59:12
【问题描述】:
我想从用户那里获取输入并打印相应的 Ascii 值。这可能类似于this 但是我正在寻找emu8086 上的特定代码。
输入:01000001
输出A
输入:00110000
输出0
【问题讨论】:
-
链接问题中的代码适用于emu8086。 rotate-through-carry 和常规旋转都存在于原始 8086 中。
我想从用户那里获取输入并打印相应的 Ascii 值。这可能类似于this 但是我正在寻找emu8086 上的特定代码。
输入:01000001
输出A
输入:00110000
输出0
【问题讨论】:
这可能对你有帮助
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
【讨论】: