Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 20:20   #1
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию Немного не работает код лабораторной

Задание : 12. Разработать подпрограмму, которая разбивает заданную строку на слова (слово считается от пробела до пробела, но в состав слова не вхо-дят). Разработать программу, которая вводит с клавиатуры строку и выво-дит каждое слово с новой строки.

Код:
data segment
stroka db '','$'
IN_STR db 80, ?, 82 dup (?) ; буфер ввода
OUT_STR db 0Dh, 0Ah,'$' ; буфер вывода
KOL db 0 ;символов в слове
data ends
code segment
assume cs:code, dsata
START: mov ax, data
mov ds, ax ; Загрузить сегментный адрес данных

mov ax,3
int 10h; очистка экрана

; Ввод строки
lea dx, IN_STR
mov ah, 0ah
int 21h
; перевод на новую строку
lea dx,OUT_STR
mov ah,09h
int 21h

xor ax,ax
lea bx, IN_STR+2
mov cl, IN_STR+1

cik1:
mov al, [BX] ; очередной символ строки
cmp al,' '
jne prob1
INC BX
LOOP cik1


prob1: mov cl, IN_STR+1
cik:
mov al, [BX] ; очередной символ строки
cmp al,' '
jne prob
mov al,KOL
mov KOL,0
cmp al,1
jng sled

push cx
push bx
sub bx,ax
mov cl,al;количество символов инвертирования
call near ptr invert

pop bx
pop cx
dec KOL
xor ax,ax

prob: inc KOL
sled:
inc bx
loop cik


mov ah,01
int 21h
QUIT: mov ax, 4C00h ; Код завершения 0
int 21h ; Выход в DOS


invert proc near ; Подпрограмма
push si
xor ax,ax
O: mov ah,02h
mov dl,[bx]
int 21h
inc bx
LOOP O
lea dx,OUT_STR
mov ah,09h
int 21h
pop si
ret
invert endp


code ends
end START




теряется последнее введенное слово..... что тут не так? =(
Sonyalex90 вне форума Ответить с цитированием
Старый 16.12.2009, 22:53   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

допишите в конец строки пробел, скорректируйте количество символов строке+1
Код:
mov cl, IN_STR+1
что у Вас в ch?
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код (If_Then_ElseIf_) Exo Microsoft Office Excel 18 10.04.2012 13:09
Помогите немного уменьшить код С++ Olya90 Помощь студентам 10 06.10.2009 10:44
Код проверки столкновений не работает. Манжосов Денис :) Общие вопросы Delphi 8 02.02.2009 10:31
Не работает код... prizrak1390 Общие вопросы Delphi 3 22.10.2008 14:59
Почему не работает код? Kashp Общие вопросы Delphi 3 09.08.2007 17:33