WMmail.ru - сервис почтовых рассылок

пятница, 18 октября 2013 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10653
• повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 3992
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 1762
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1547
Дата выхода:18.10.2013, 17:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:46 / 24
Вопросов / ответов:1 / 1

Консультация # 187573: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Задал преподаватель написать программу подсчета положительных элементов массива типа Word. Реализовать надо с помощью Nsam. Вот что у меня получилось:

Код :
...

Консультация # 187573:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Задал преподаватель написать программу подсчета положительных элементов массива типа Word. Реализовать надо с помощью Nsam.
Вот что у меня получилось:

Код :
 SECTION .data MAS: dw 1,1,2,-5,5,-3     /массив  SECTION .text org 0x100  START: mov si,0    /обнуление счетчиков mov bl,0 mov dh,0 FOR_LOOP:     /цикл mov al,[MAS+si] cmp al,bl ja CHETCHIK  METKA: inc si        /наращивает счетчик прогонов cmp si,6   /пока не будет 6 элементов по колву чисел в массиве jne FOR_LOOP jmp FINISH   CHETCHIK: inc dh     /наращиваем счётчик положительных элементов jmp METKA  FINISH: mov dl,ah       /вывод add DL,'0' mov dh, 0x02 int 0x21 mov aH,0x4C int 0x21 int 0x21 

Вот только ничего она не выводит.
В чём я ошибся?

Дата отправки: 15.10.2013, 16:58
Вопрос задал: Пока Что Студент (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Пока Что Студент!
Посмотрите исправленную версию.
Будет непонятно, спрашивайте в мини-форуме smile

Код :
SECTION .data MAS: db 1,1,2,-5,5,-3     ;массив (не dw !!!!) байтов SECTION .text 	org	0x100 START: 	mov	si,0    ;обнуление счетчиков 	mov	bl,0 	mov	dh,0 FOR_LOOP:     ;цикл 	mov	al,[MAS+si] 	cmp	al,bl 	jg	CHETCHIK	;а не ja CHETCHIK !!!! METKA: 	inc	si     ;наращивает счетчик прогонов 	cmp	si,6   ;пока не будет 6 элементов по колву чисел в массиве 	jne	FOR_LOOP 	jmp	FINISH  CHETCHIK: 	inc dh     ;наращиваем счётчик положительных элементов 	jmp METKA FINISH: 	mov dl,dh       ;вывод (не mov dl,ah !!!!) 	add DL,'0' 	mov ah, 0x02	;не mov dh, 0x02 !!!! 	int 0x21 	mov aH,0x4C 	int 0x21

Ваша программа работает с байтами, поэтому я исправил данные на байты.
Потом посмотрел условие и увидел там Word. Вот Вам версия для работы со словами. Сравните:
Код :
SECTION .data MAS: dw 1,1,2,-5,5,-3     ;массив SECTION .text 	org	0x100 START: 	mov	si,0    ;обнуление счетчиков 	mov	bx,0 	mov	dh,0 FOR_LOOP:     ;цикл 	mov	ax,[MAS+si] 	cmp	ax,bx 	jg	CHETCHIK	;а не ja !!!! METKA: 	add	si,2     ;наращивает счетчик прогонов 	cmp	si,12   ;пока не будет 6 элементов по колву чисел в массиве 	jne	FOR_LOOP 	jmp	FINISH  CHETCHIK: 	inc dh     ;наращиваем счётчик положительных элементов 	jmp METKA FINISH: 	mov dl,dh       ;вывод (не mov dl,ah !!!!) 	add DL,'0' 	mov ah, 0x02	;не mov dh, 0x02 !!!! 	int 0x21 	mov aH,0x4C 	int 0x21 

Ну и еще одна версия, как я бы сделал:
Код :
SECTION .data MAS: dw 1,1,2,-5,5,-3     ;массив len equ ($-MAS)/2 SECTION .text 	org	0x100 START: 	lea si,[MAS] 	mov cx, len 	mov dl, 0 FOR_LOOP:     ;цикл 	lodsw 	test ax, ax 	jle METKA 	inc dl     ;наращиваем счётчик положительных элементов METKA: 	loop FOR_LOOP 	add DL,'0' 	mov ah, 0x02 	int 0x21 	mov ah,0 	int 16h			;ждем нажатие клавиши 	mov aH,0x4C 	int 0x21

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 15.10.2013, 17:27
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    10 сентября 2013, 23:03
RFpro.ru: Ассемблер? Это просто! Учимся программировать    27 июля 2013, 22:32
RFpro.ru: Ассемблер? Это просто! Учимся программировать    12 июня 2013, 22:03

Все выпуски рассылки
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Игры Алавар
Новые игры Фабрики игр Алавар
Подписчиков: 323
  Все о компьютерных сетях
Блог системного администратора о сетях, компьютерах, передовых технологиях и многом ином
Подписчиков: 138
  Игры для социальных сетей
Обзор новых игр в социальных сетях (Вконаткте, Фейсбук, Одноклассники).
Подписчиков: 41
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий