Как получить ввод, как на первом изображении, и использовать каждый бит для отображения различной информации. У меня есть бит [1: 0], который представляет тип комнаты, бит [8: 2] для нет. мест в наличии ... итак, всего 16 бит. Что я сделал, вместо того, чтобы получать ввод, я объявил статус комнаты как переменную (room_status dw 0110111101111101b), все работает, но мне нужно получить статус комнаты как пользовательский ввод. Как я go об этом?
data segment
nl db 0ah, 0dh, '$'
w_board db "White Board$"
b_board db "Black_board$"
computer db "Computer$"
projector db "Projector"
room_status dw 0110111101111101b
room_type db ?
num_seats db ?
dep_ID db ?
proj_comp db ?
bw_board db ?
PA_system db ?
str1 db "Type of the room : $"
str2 db "Number of seats : $"
str3 db "Department : $"
str4 db "Overhead Projector/Computer: $"
str5 db "Black Board/White Board : $"
str6 db "P.A. System : $"
data ends
temp segment stack
db 200h dup(?)
temp ends
code segment
assume cs:code, ds:data, ss:temp
start: mov ax,data
mov ds,ax
;your code starts here
mov ax, room_status
and ax, 0000000000000011b
mov room_type, al
mov ax, room_status
and ax, 0000000011111100b
ror ax, 2
mov num_seats, al
mov ax, room_status
and ax, 0001111100000000b
ror ax, 8
mov dep_ID, al
mov ax, room_status
and ax, 0010000000000000b
rol ax, 3
mov proj_comp, al
mov ax, room_status
and ax, 0100000000000000b
rol ax, 2
mov bw_board, al
mov ax, room_status
and ax, 1000000000000000b
ror ax, 1
mov PA_system, al
;======================================
;type of room
lea dx, str1
mov ah, 09h
int 21h
mov dl, room_type
add dl,30h
mov ah, 02h
int 21h
call newline
;=======================================
;no. of seats
lea dx, str2
mov ah, 09h
int 21h
mov ah, 0
mov al, num_seats
cmp ax, 10
jb bp1
mov bl, 10d
div bl
mov bh, ah ;save remainder in bh register
mov dl, al
add dl, 30h
mov ah, 02h
int 21h
mov dl, bh ;second digit
add dl,30h
mov ah, 02h
int 21h
jmp bp2
bp1:
mov dl, al
add dl, 30h
mov ah, 02h
int 21h
bp2:
;department id
call newline
lea dx, str3
mov ah, 09h
int 21h
mov ah, 0
mov al, dep_ID
cmp ax, 10d
jb bp3
mov bl, 10d
div bl
mov bh, ah ;save remainder in bh register
mov dl, al
add dl, 30h
mov ah, 02h
int 21h
mov dl, bh ;second digit
add dl,30h
mov ah, 02h
int 21h
jmp overhead_pj_comp
bp3:
mov dl, al
add dl, 30h
mov ah, 02h
int 21h
overhead_pj_comp:
call newline
lea dx, str4
mov ah, 09h
int 21h
mov al, proj_comp
cmp al, 0
je bb
lea dx,computer
mov ah,09h
int 21h
jmp boardT
pjet:
lea dx,projector
mov ah,09h
int 21h
boardT:
call newline
lea dx, str5
mov ah,09h
int 21h
mov al, bw_board
cmp al, 0
je bb
lea dx,w_board
mov ah,09h
int 21h
jmp paSystem
bb:
lea dx,b_board
mov ah,09h
int 21h
paSystem:
call newline
lea dx, str6
mov ah,09h
int 21h
mov dl,al
add dl,30h
mov ah,02h
int 21h
done:
mov ax,4c00h
int 21h
newline proc
lea dx, nl
mov ah, 09h
int 21h
ret
newline endp
code ends
end start
Это вывод моей программы без ввода пользователя