Добрый день, я в ассемблере новичок, не понимаю почему выполняеться всегда метка false а в метку true не попадаем. Что делаю не так. Программа простая, должна найти в строке символ. Пишу ее на TASM. Код (Text): MODEL SMALL STACK 256 DATASEG zero DB '00000',10,13,'$' one DB '11111',10,13,'$' str1 db 'Privet kak dela' str1_len equ $-str1 CODESEG start: mov ax,@data mov ds,ax cld mov al,'k' mov di,offset str1 mov cx,offset str1_len repne scasb jz true false: lea dx,zero mov ah,09h int 21h jmp exit true: lea dx,one mov ah,09h int 21h jmp exit exit: mov ax,4C00h int 21h end start После сборки и запуска выводит 00000 Хотя поиск произвожу по символу 'k'.
Velheart А что значит "Upd врал" ? Я переписал, но все тоже самое Код (Text): cld mov al,'k' mov di,offset str1 mov cx,15 repne scasb je true Все время 00000, хотя как видно k содержиться в строке.
Velheart Vov4ick Вы имеете ввиду замена. Код (Text): start: mov ax,@data mov ds,ax на Код (Text): start: mov ax,@data mov es,ax Тоже самое, только вмете с 00000 мусор сыпеться на экран, чертов компилятор.
С языка ассемблера нет компиляторов, есть только трансляторы. Поэтому следует говорить "чёртов я". Настраивать надо и ES и DS. Вообще, пишите ком-файлы, чтобы за вас всё делала ДОС. mov ax, dataseg mov ds,ax mov es,ax