Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Cложение в цикле http://www.cyberforum.ru/assembler/thread42048.html
Дали задание: Есть массив М = {15, 1, 3, 7, -2, 6, 12, 10, 9, 3}, есть функция Y=(m1-m2)x + (m2-m3)2x + ... + (m9 - m10)9x, коэффициент x=2, с клавиатуры вводится, сколько раз складывать (m1-m2)x +...
MASM,TASM Assembler
Очевидно, что программирование на макроассемблере легче для восприятия чем на уровне команд процессору, но значит ли это что екзешники в Масм будут весить больше?
Настройка файла masm.bat Assembler
Приветствую всех! =)) У меня возникла следующая проблема: Принёс домой Ассемблер MASM, запускаю, а у он не поливает! =)) Как я понял всё дело в директориях описанных в MASM.bat. Вроде всё поставил...
Assembler Вывод на экран графического изображения вывод на экран графического изображения на экран. Каждый элемент фигуры должен быть закрашен в свой цвет: 1-ая задача .чтоб выводился на экран цифру восемь на весь экран по центру , чтоб она... http://www.cyberforum.ru/assembler/thread41850.html
Assembler Заполнить строку по центру экрана символом "&" http://www.cyberforum.ru/assembler/thread41711.html
Помогите пожалуйста... Заполнить строку по центру экрана символом &.
Assembler Прерывания Ctrl+C
Помогите пожалуйста с задачей: Написать программу на ассемблере, которая вводит 2 числа с клавиатуры, считает их сумму и выводит в рамку. Рамку вывести в нижнем правом углу экрана. Добавлено...
Перевод из си в ассемблер.Сил моих больше нет. Assembler
Вообщем,задача состоит в следующем перевести сишный код в ассемблерный. Часть кода есть,но т.к. писался он в ускоренном темпе,то есть ошибки. Помогите устранить их!:'( Сишный код: float...
Assembler Чем отличается ввод B8000h от 0b800h? Подскажите пожалуйста, чем отличается ввод B8000h от 0b800h??? Если ничем, то почему можно вводить так и так??? http://www.cyberforum.ru/assembler/thread41425.html
Assembler Пример программы, выводящей на экран строку символов в ‘ ‘ http://www.cyberforum.ru/assembler/thread41196.html
Прошу написать программу, выводящей на экран строку символов в ‘ ‘. Очень нужно для здачи экзамена.
Assembler Нарисовать РОМБ по центру экрана. (в графическом режиме) Народ кто шарит в Ассемблере помогите пожалуйста очень срочно нужно! Готов даже заплатить! Задание 1. Нарисовать РОМБ по центру экрана. (в графическом режиме) Задание 2. Организовать... http://www.cyberforum.ru/assembler/thread41061.html
murderer
4609 / 1578 / 163
Регистрация: 06.10.2010
Сообщений: 3,498
10.07.2014, 11:07 0

Графический туннель. Как работает код?

10.07.2014, 11:07. Просмотров 1022. Ответов 10
Метки (Все метки)

Ответ

Код используется как данные.

si при запуске равен 256, то есть указывает на точку входа, соответственно si+12 указывает на инструкцию "inc ax". Инструкции "cmc" и "inc dx" вначале - это данные и судя по всему никакой полезной работы не выполняют.

bx при запуске равен 0, bp - 2332. Внутренний цикл выполняется 2 раза: на первой итерации bx=0, на второй - 2332. По окончании цикла bx обнуляется. Таким образом "mul bx" вначале цикла используется для обнуления регистров ax и dx.

Если убрать магию и развернуть внутренний цикл - получится это
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
org 100h
use16
    mov al, 0x13
    int 0x10
    push word 0xa000
    pop es
 
    @@:mov    ax,1
       xor    dx,dx
       add    ax, di
       adc    word[_si],0
       div    word [divider]
 
       faddp  st1, st0
       fsqrt
       fdivr  dword [_si]
       fild   [x]
       fild   [y]
       fpatan
 
       fmul   dword [_si]
       fiadd  [_si]
       fistp  [x]
       sub    ax,83h
       xchg   ax,[x]
       fild   [x]
       fmul   st,st
       fxch   st1
       fmul   dword [_si]
       fiadd  [_si]
       fistp  [y]
       sub    dx,83h
       xchg   dx,[y]
       xor    ax,dx
       fild   [y]
       fmul   st,st
       fxch   st1
 
       or     al,87h
       stosb
   jmp @b
 
_si     dw 5040,17141
divider dw 0140h
x       dw 8397
y       rw 1
Мне кажется код можно соптимизировать - есть лишние обращения к переменным x и y.

Добавлено через 5 минут
Вот немного комментариев к оригинальному коду
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
org 100h
use16
    mov al, 0x13       ;Сюда указывает si
    cmc                ;Эти две инструкции - данные
    inc dx             ;Используются при обращении к dword[si]
    int 0x10
    push word 0xa000
    pop es
 
pix:
    mul bx             ;обнуляем ax и dx
    inc ax
    add ax, di
    adc [si], bx
    div word [si+12]
clp:
    fmul dword [si]
    fiadd word [si]
    fistp word [bx]
    sub ax, 83h        ; устанавливает центр 
    xchg ax, [bx]
    xor cx, ax
    fild word [bx]
    fmul st,st
    xor bx, bp         ;На первой итерации bx=0, на второй bx=bp, на третьей bx=0
    xchg ax, dx
    fxch st1
    jnz clp            ;Цикл выполнится 2 раза
 
    faddp st1, st0
    fsqrt
    fdivr dword [si]
    fild word [bx]
    fild word [bp]
    fpatan
 
    setalc             ;Обнуляем ax
    xchg ax, cx
    or al, 0x87
    stosb              ;Вывод пикселя на экран
    jmp short pix


Вернуться к обсуждению:
Графический туннель. Как работает код?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 11:07

Как открыть на Mikrotik VPN туннель для подключения по RDP?
Скажите пожалуйста как открыть на Mikrotik VPN туннель для подключение по RDP, наше сервер 1С...

Как создать второй активный туннель через резервный маршрут
Уважаемые гуру, требуется совет. Есть cisco ASA, на ней несколько провайдеров, есть основной...

Не работает графический режим
написал программу, откомпилировал пишет error15: fail not found <graph.tpu> но я ведь включил режим...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru