Witam. Jestem początkujący w posługiwaniu się assemblerem i napotkałem na następujący problem. Mam stworzony program, który przekształca kod binarny 16-bitowy, tzn odczytuje z niego kolejne bity i efektem całego programu jest wyświetlenie urządzeń w komputerze ( jest lub nie ma) Problem dotyczy wyświetlenia pamięci RAM. Wyswietla mi sie tylko, że jest a potrzebuję aby wyświetliło mi ilość pamięci RAM. Wysyłam program i proszę o pomoc.
Progr segment
assume cs:Progr, ds:dane, ss:stosik
start: mov ax,dane
mov ds,ax
mov ax,stosik
mov ss,ax
mov sp,offset szczyt
int 11h
AND AX,0000000000000001b
JZ zero
mov dx, offset napis1
mov ah,09h
int 21h
jmp dalej
zero: mov dx,offset napis2
mov ah,09h
int 21h
dalej:
int 11h
AND AX,0000000000000010b
ror ax,1
JZ zero1
mov dx, offset napis3
mov ah,09h
int 21h
jmp dalej1
zero1: mov dx,offset napis4
mov ah,09h
int 21h
dalej1:
** int 11h
and ax,0000000000001100b
ror ax,2
add al,'0'
mov [napis6],al
mov dx,offset napis5
mov ah,09h
int 21h
jmp dalej2
mov ah,4ch
mov al,0
int 21h**
dalej2:
int 11h
and ax,0000000000110000b
ror ax,4
add al,'0'
mov [napis8],al
mov dx,offset napis7
mov ah,09h
int 21h
jmp dalej3
mov ah,4ch
mov al,0
int 21h
dalej3:
int 11h
and ax,0000000011000000b
ror ax,6
add al,'0'
mov [napis10],al
mov dx,offset napis9
mov ah,09h
int 21h
jmp dalej4
mov ah,4ch
mov al,0
int 21h
dalej4:
int 11h
AND AX,0000000100000000b
ror ax,8
JZ zero2
mov dx, offset napis11
mov ah,09h
int 21h
jmp dalej5
zero2: mov dx,offset napis12
mov ah,09h
int 21h
dalej5:
int 11h
and ax,0000111000000000b
ror ax,9
add al,'0'
mov [napis14],al
mov dx,offset napis13
mov ah,09h
int 21h
jmp dalej6
mov ah,4ch
mov al,0
int 21h
dalej6:
int 11h
AND AX,0001000000000000b
ror ax,12
JZ zero3
mov dx, offset napis15
mov ah,09h
int 21h
jmp dalej7
zero3: mov dx,offset napis16
mov ah,09h
int 21h
dalej7:
int 11h
AND AX,0010000000000000b
ror ax,13
JZ zero4
mov dx, offset napis17
mov ah,09h
int 21h
jmp dalej8
zero4: mov dx,offset napis18
mov ah,09h
int 21h
dalej8:
int 11h
and ax,1100000000000000b
ror ax,14
add al,'0'
mov [napis20],al
mov dx,offset napis19
mov ah,09h
int 21h
mov ah,4ch
mov al,0
int 21h
Progr ends
dane segment
napis1 db 'Wykryto obecność dyskietki',10,13,'$'
napis2 db 'nie wykryto obecności dyskietki',10,13,'$'
napis3 db 'Jest koprocesor',10,13,'$'
napis4 db 'Brak koprocesora',10,13,'$'
napis5 db 'RAM:'
napis6 db 0,10,13, '$'
napis7 db 'Tryb video:'
napis8 db 0,10,13, '$'
napis9 db 'Liczba napedow dyskietek:'
napis10 db 0,10,13, '$'
napis11 db 'Jest DMA',10,13,'$'
napis12 db 'Brak DMA',10,13,'$'
napis13 db 'Liczba portow RS-232:'
napis14 db 0,10,13, '$'
napis15 db 'Jest joystick',10,13,'$'
napis16 db 'Brak joysticka',10,13,'$'
napis17 db 'Jest drukarka',10,13,'$'
napis18 db 'Brak drukarki',10,13,'$'
napis19 db 'Liczba portow rownoleglych:'
napis20 db 0,10,13, '$'
dane ends
stosik segment
dw 100h dup(0)
szczyt Label word
stosik ends
end start