PauloDinosaur
@PauloDinosaur
Начинающий

Не пойму почему метка не работает так как нужно masm32?

.486
.model flat, stdcall
option casemap :none ; ñ ó÷åòîì ðåãèñòðà

include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.data
i db "T ro Ps",0
j db ?
pr dd 20h
zero dd 0
.code
start:
xor ecx,ecx
mov eax,offset i
mov ebx,zero
next:cmp eax,pr
jne nextEl; если пробел равен элементу строки то должно перейти на следующую строку, а
;переходит в любом случае на метку nextEl
add ebx,1
cmp ebx,1
jg delElement
jmp nextEl
nextEl:
mov eax,[eax+1]
jmp next
delElement:
cmp eax,pr
jne mover
mov eax,[eax+1]
mover:
mov edx,eax
mov eax,[eax+1]


end start
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
mov eax,offset i
mov ebx,zero
next:cmp eax,pr
jne nextEl; если пробел равен элементу строки то должно перейти на следующую строку

...а сравниваются, между тем, адрес строки и адрес переменной содержащей пробел.
Должно быть как-то так:
mov eax,offset i
mov ebx,zero
next:cmp byte ptr [eax], 20h
jne nextEl

Дальше код тоже барахло.
Изучите то, как записываются разные виды адресации в вашем ассемблере. Например: www.c-jump.com/CIS77/ASM/Addressing/lecture.html#R...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
PauloDinosaur
@PauloDinosaur Автор вопроса
Начинающий
Задача программы:
Подсчет пробелов в строке, если пробелов больше 1 то нужно удалить все пробелы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы