25.09.2018, 05:13 [+3 UTC]
в нашей команде: 2 973 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.50 (13.09.2018)

Общие новости:
24.09.2018, 16:49

Форум:
21.09.2018, 12:18

Последний вопрос:
23.09.2018, 21:57

Последний ответ:
24.09.2018, 13:59

Последняя рассылка:
24.09.2018, 18:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
15.05.2012, 10:03 »
Иван Васильевич Митяев
спасибо! [вопрос № 186015, ответ № 270810]
14.08.2011, 12:16 »
Ольга Андреева
Спасибо. Хотелось бы только получить более развернутый ответ, поскольку остались некоторые вопросы. [вопрос № 183871, ответ № 268041]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

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

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 497
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 93
Kdsfofwe21
Статус: 1-й класс
Рейтинг: 45

Перейти к консультации №:
 

Консультация онлайн # 193239
Раздел: • Assembler
Автор вопроса: todomoku (Посетитель)
Отправлена: 12.05.2018, 00:52
Поступило ответов: 1

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Не могу найти ошибку в коде, как я поняла нарушена логика программы. При компилировании сразу видно ошибку. Буду благодарна помощи!



Код (Assembler) :: выделить код
#start=Traffic_Lights.exe#
 
name "traffic2"
 
yellow_and_green equ      0000_0110b
red              equ      0000_0001b
yellow_and_red   equ      0000_0011b
green            equ      0000_0100b
 
all_red          equ      0010_0100_1001b
 
start:
nop
 
 
; 0,1,2
 
mov ax, green
out 4, ax
 
mov ax, yellow_and_green
out 4, ax
 
mov ax,red
out 4, ax
 
mov ax, yellow_and_red
out 4, ax
 
 
; 3,4,5
 
mov ax, green << 3
out 4, ax
 
mov ax, yellow_and_green << 3
out 4, ax
 
mov ax,red << 3
out 4, ax
 
mov ax, yellow_and_red << 3
out 4, ax
 
 
 
; 6,7,8
 
mov ax, green << 6
out 4, ax
 
mov ax, yellow_and_green << 6
out 4, ax
 
mov ax,red << 6
out 4, ax
 
mov ax, yellow_and_red << 6
out 4, ax
 
 
 
; 9,A,B
 
mov ax, green << 9
out 4, ax
 
mov ax, yellow_and_green << 9
out 4, ax
 
mov ax,red << 9
out 4, ax
 
mov ax, yellow_and_red << 9
out 4, ax
 
 
; all
 
mov ax, all_red
out 4, ax
 
mov ax, all_red << 1  ; all yellow
out 4, ax
 
mov ax, all_red << 2  ; all green  smile  
out 4, ax
 
 
jmp start

код перенесен в вопрос.
--------

• Отредактировал: Зенченко Константин Николаевич (Модератор)
• Дата редактирования: 12.05.2018, 10:17

Состояние: Консультация закрыта

Здравствуйте, todomoku!

При запуске программы светофора, все индикаторы выключены. Устанавливая любой бит, можно включить, нужный сиглан светофора, можно включить один светофор, или вообще устроить день жестянщика.

Смотрите код, реализовано два варианта работы светофоров.

Код (Assembler) :: выделить код
#start=Traffic_Lights.exe#
 
name "traffic2" 


red1		equ	1
yellow1		equ	2
green1		equ	4

red2		equ	8
yellow2		equ	16
green2		equ	32

red3		equ	64
yellow3		equ	128
green3		equ	256 

red4		equ	512
yellow4		equ	1024
green4		equ	2048

yellowAll	equ	yellow4+yellow3+yellow2+yellow1
redAll		equ	red4+red3+red2+red1

start:	mov	si,offset Variant1
	call	show
	mov	si,offset Variant2
	call	show
jmp start

Show:	lodsw
	mov	cx,ax
@@01:	push	si
	push	cx
	lodsw
	mov	cx,ax
@@02:	push	cx
	lodsw
	out	4,ax

	mov     cx, 4Ch
	mov     dx, 4B40h
	mov     ah, 86h
	int     15h

	pop	cx
	loop	@@02

	pop	cx
	pop	si
	loop	@@01
	ret
Variant1	dw	5,4
dw	red4+green3+red2+green1
dw	yellowAll+red2+red4
dw	green4+red3+green2+red1
dw	yellowAll+red3+red1
Variant2	dw	2,10
dw	redAll
dw	redAll+yellow1
dw	red4+red3+red2+green1
dw	red4+red3+red2+yellow2+yellow1
dw	red4+red3+red1+green2
dw	red4+red3+red1+yellow3+yellow2
dw	red4+red2+red1+green3
dw	red4+red2+red1+yellow4+yellow3
dw	red3+red2+red1+green4
dw	red3+red2+red1+yellow4


Удачи!


Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 17.05.2018, 17:40

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193239

Зенченко Константин Николаевич
Модератор

ID: 31795

# 1

= общий = | 12.05.2018, 10:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
todomoku:

1)Разширение файла должно быть asm, а не txt.
2)Какая ОСь, чем компилировали. У ошибки есть код и имя - какие?
3)что программа должна делать, т.е. как можно понять правильность логики, если не знать какая она должна быть.

ps:код выкладывают в самом вопросе.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 12.05.2018, 11:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
todomoku:

4) Что такое порт 4, куда Вы так настойчиво отправляете данные?
5) Кто Вас учил писать знак подчеркивания в двоичных числах?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

todomoku
Посетитель

ID: 402046

# 3

= общий = | 13.05.2018, 20:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:


Это emu8086, программа представляет из себя светофор, который работает не правильно. Обьяснить ошибку не могу, но при компиляции ее видно на лицо.

Зенченко Константин Николаевич
Модератор

ID: 31795

# 4

= общий = | 14.05.2018, 12:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Код (Assembler) :: выделить код
mov ax, all_red
out 4, ax


mov si, offset situation


next:
mov ax, [si]
out 4, ax

; wait 5 seconds (5 million microseconds) 
mov     cx, 4Ch    ;    004C4B40h = 5,000,000 
mov     dx, 4B40h
mov     ah, 86h
int     15h


add si, 2 ; next situation 
cmp si, sit_end
jb  next
mov si, offset situation
jmp n

В примере по Эме, есть такой вариант, он с задержкой

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Модератор

ID: 31795

# 5

= общий = | 15.05.2018, 12:01 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
todomoku:

Ошибка, о чем Вы говорите.
Все работает, правда светофор бешеный получился.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14008 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.50 от 13.09.2018