Я новичок в программировании на ассемблере.
Может ли кто-нибудь выяснить, куда я иду не так?
Ошибка при сборке являетсяПовернуть счетчик из диапазона Ошибка
Поворот отсчитывать ошибки Range
Ошибка находится на линии: РОЛ бл, 04
Это мой код:
disp macro var
lea dx, var
mov ah, 09H
int 21H
endm
ending macro
mov ah, 4cH
int 21H
endm
.model small
.stack 100H
.data
msg1 db 10, 13, "_____STRING OPERATION_____$"
msg2 db 10, 13, "1.Length", 10, 13, "2.Reverse $"
msg3 db 10, 13, "3.Exit", 10, 13, "--->$"
error db 10, 13, "Enter a valid choice ",10, 13, "$"
msg4 db 10, 13, "Enter the string: $"
msg5 db 10, 13, "Length of the string: $"
msg6 db 10, 13, "Reversed String: $"
choice db ?
str1 db 20, ?, 20 dup(0)
.code
mov ax, @data
mov ds, ax
menu: disp msg1
disp msg2
disp msg3
mov ah, 01H
int 21H
mov choice, al
cmp choice, 31H
je str_len
cmp choice, 32H
je Reverse
cmp choice, 33H
je Exit
disp error
jmp menu
str_len:disp msg4
mov ah, 0aH
lea dx, str1
int 21H
disp msg5
lea si, str1[1]
mov bl, [si]
mov cl, 02
back: rol bl, 04
mov dl, bl
mov ah, 02H
int 21H
loop back
ending
Reverse:
Exit: ending
end
Попробуйте добавить '.386' в начале, если вам не нужно оставаться на 8086. 8086 поддерживает только операнды', 1' или ', cl', а не', imm8'. – Ped7g
Он указывает 8086 как тег ... –
после использования .386, появилось предупреждение о том, что «Предполагаемый сегмент 32 бит», но он переходит в бесконечный цикл с напечатанным значением мусора –