Консультация № 193239
12.05.2018, 00:52
0.00 руб.
12.05.2018, 10:17
0 6 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

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


[code lang=asm h=200]#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 :)
out 4, ax


jmp start[/code]

Обсуждение

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

ps:код выкладывают в самом вопросе.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
12.05.2018, 11:12
общий
Адресаты:
4) Что такое порт 4, куда Вы так настойчиво отправляете данные?
5) Кто Вас учил писать знак подчеркивания в двоичных числах?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
402046
1
13.05.2018, 20:23
общий
Адресаты:

Это emu8086, программа представляет из себя светофор, который работает не правильно. Обьяснить ошибку не могу, но при компиляции ее видно на лицо.
давно
Старший Модератор
31795
6196
14.05.2018, 12:14
общий
[code lang=asm h=100]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[/code]
В примере по Эме, есть такой вариант, он с задержкой
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
15.05.2018, 12:01
общий
Адресаты:
Ошибка, о чем Вы говорите.
Все работает, правда светофор бешеный получился.

[video=rfpro]https://rfpro.ru/d/10993.3gp[/video]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
17.05.2018, 17:40
общий
это ответ
Здравствуйте, todomoku!

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

Смотрите код, реализовано два варианта работы светофоров.
[code lang=asm h=200]#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[/code]

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа