Witam. Zacząłem programować z Assemblerem i mam za zadanie napisać program, który to by wczytał linijkę jakiś znaków i wypisał liczbę dużych liter w tej linijce (np asd45GH, wynik = 2). Mam tu kod, lecz nie mogę go skompilować z powodu "Illegal instruction". Nie mam pojęcia nawet w której linijce popełniłem błąd... Jakieś propozycje? :)
.model small
.stack 100h
.data
type db "Your text: "
enter db 10, 13, "$"
bufer db 255
read db ?
result db "Result: $"
number db 0
.code
start:
mov ax, @data
mov ds, ax
mov ah, 9
mov dx, offset type
int 21h
mov ah, 0Ah
mov dx, offset bufer
int 21h
mov ah, 9
mov dx, offset enter
int 21h
mov cl, read
mov bx, offset bufer
mov dl, 'A'
mov dh, 'Z'
loop:
CMP [ds:bx], dl
JBE not
CPM [ds:bx], dh
JAE not
INC number
not:
INC bx
DEC cl
CMP cl, 0
JNE loop
MOV byte ptr [ds:bx], '$'
mov ah, 9
mov dx, offset result
int 21h
mov ah, 4Ch
mov al, 0
int 21h
END start