Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: praidik
Дата сообщения: 28.05.2011 20:16
akaGM
Писал я
Вот метка

Цитата:
question:
mov ah, msg
Mov dx, offset msg
Mov ah, 09h
Int 21h
mov ah, msg7
Mov dx, offset msg7
Mov ah, 09h
Int 21h
Mov ah, 1h
int 21h
cmp al, 'y'
je close
cmp al, 'n'
je menu
call close


3й столбец с начала кода


Цитата:
и что такое
Цитата: добавить например вывод переменной

Например в метку "umnozh: ;Умножение"
Добавить
mov ah, msg7
Mov dx, offset msg7
Mov ah, 09h

Если добавить, то выдаёт ошибку... Также будет если добавить в любое другое место кода...
Автор: akaGM
Дата сообщения: 29.05.2011 12:05
praidik

Цитата:
Если добавить, то выдаёт ошибку

при компиляции? какую?
Автор: praidik
Дата сообщения: 29.05.2011 13:13
akaGM
**Error** (new).asm(35) Relative jump out range by 0009h bytes
Автор: akaGM
Дата сообщения: 29.05.2011 13:38
praidik
ну пиши вместо
jmp __label

jmp far __label
Автор: Abs62
Дата сообщения: 29.05.2011 14:02
akaGM
Да у него не с jmp проблема, а с je.


praidik

Цитата:
cmp al, 'y'
je close

Английским же языком написано, что слишком далёкий переход. Используй jmp для таких дистанций.

Код: cmp al, 'y'
jne no_close
jmp close
no_close:
...
Автор: Qraizer
Дата сообщения: 29.05.2011 20:06
Третий раз за пол-недели. Прям эпидемия. Вот, не жалко третий раз линк дать.
Автор: praidik
Дата сообщения: 30.05.2011 06:48
Спасибо всем за помощь
Автор: Batyrin007
Дата сообщения: 07.06.2011 16:20
помогите пожалуйста написать программу: Дан массив из 10 байт. Найти разность максимального и минимального значения.
Автор: VGrad
Дата сообщения: 07.06.2011 23:22

Цитата:
помогите пожалуйста написать программу

А в чём проблема ?

Если во всём, то вам сюда: http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=2395#1
Автор: Batyrin007
Дата сообщения: 08.06.2011 07:23
проблема в том что я не знаю как написать программу на ассемблере
Автор: SERGE_BLIZNUK
Дата сообщения: 08.06.2011 10:08
Batyrin007

прочитайте в шапке данной темы "важное примечание"
Автор: akaGM
Дата сообщения: 08.06.2011 10:10
Batyrin007
а можно поинтересоваться зачем она тебе эта программа?
Автор: Master_Profi
Дата сообщения: 10.06.2011 01:09
нигде не смог найти точного описания как задается массив...если можно напишите как...можно ли задавать его из N элементов, и ,например, как сложить последние три цифры(первые).
Автор: akaGM
Дата сообщения: 10.06.2011 01:45
Master_Profi

Цитата:
как задается массив

например, можно вот так:
array1 dd 1,2,3,4,5 ;длинных целых
array2 db 1,2,3,4,5 ;байт
array3 dw 1,2,3,4,5 ;слов
array4 db '1','2','3','4','5' ;символов


Цитата:
как сложить последние три цифры(первые)

а это как понимать?
Автор: Master_Profi
Дата сообщения: 10.06.2011 06:37
ну, как допустим написать программку чтоб сложить числа "3", "4", "5",в С++ бы сделал, а вот тут не знаю как...наверно надо какой-то цикл задать, начинающийся с последней цифры и который повторяется только 3 раза. но как выразить не знаю.
Автор: VGrad
Дата сообщения: 10.06.2011 09:04

Цитата:
нигде не смог найти точного описания как задается массив

Смотрим здесь:
http://lmgtfy.com/?q=%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2+%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80

И первым в списке:
http://www.kolasc.net.ru/cdo/programmes/assembler/massiv.html
Автор: akaGM
Дата сообщения: 10.06.2011 11:56
Master_Profi
сложение трёх первых элементов массива:
Код: array3 dw 1,2,3,4,5

xor ax, ax
mov cx, 3
lea bx, word ptr array3
@@add:
add ax, word ptr [bx]
add bx, 2
loop @@add
Автор: Master_Profi
Дата сообщения: 11.06.2011 00:45

Цитата:
Смотрим здесь:
http://lmgtfy.com/?q=%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2+%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80

браво, я как бы вводил, но видимо не нашел конкретного, а второй сайт крутой! я там начало прочитал, но дальше нет, т.к. мне надо было срочно знать и времени не было...вот подумал чтобы вы обьяснили, "из уст" оно намного лучше звучит + можно задать вопрос. И в том же Гугле введут в поиск "массивы в ассемблере" и возможно наткнутся на эту ветку, где возможно будет все доходчиво обьяснено...так чем же это плохо

Цитата:
xor ax, ax
mov cx, 3
lea bx, word ptr array3

что значят эти команды? xor я так понял мы обнуляем регистр ax? а почему именно ax?
и во второй команде почему заносим число 3 именно в регистр cx?? а не какой-то другой например
ну третью команду я не понял...вот прошу комментарии...т.к. с гугла с комментариями и человеческими обьяснениями не нашел!
Автор: akaGM
Дата сообщения: 11.06.2011 00:52
Master_Profi

Цитата:
т.к. с гугла с комментариями и человеческими обьяснениями не нашел!

парень, а ты книжки умеешь читать, или только "с гугла"?
всё это самые примитивные и основные команды ассемблера, кот. описаны _в любой_ книге

это я щас написал их три, а когда _за тебя_ их напишут 133, то тоже надо будет каждую описывать? так что учите матчасть...
Автор: KChernov
Дата сообщения: 11.06.2011 09:17
Master_Profi

Цитата:
И в том же Гугле введут в поиск "массивы в ассемблере" и возможно наткнутся на эту ветку, где возможно будет все доходчиво обьяснено

А надо ли?
Если в Яндексе/Гугле и так по этим словам выдаётся куча примеров, где всё доходчиво объяснено? Зачем нужен ещё 1?
И кстати на эту тему по этому сочетанию среди первых 50 запросов ссылки нет.
Зато есть на эту.
И как? Полегчало?
Автор: akaGM
Дата сообщения: 11.06.2011 17:34
Master_Profi
вот тебе простейший пример из разряда "если бы"
если бы ты прочитал введение в ассемблер, то выучил бы его "алфавит", и следующие два вопроса просто бы не возникли:
Цитата:
xor я так понял мы обнуляем регистр ax? а почему именно ax? и во второй команде почему заносим число 3 именно в регистр cx??

потому что:
ax -- accumulative register, аккумулирующий регистр (в нём обычно собирают суммы и делают всяческий i/o)
bx -- base register (для базового адреса)
cx -- counter register (регистр для счётчиков)
dx -- data register

и это только "алфавит"...

а иначе не стать и ни мастером и ни профи...
Автор: KChernov
Дата сообщения: 11.06.2011 17:59
akaGM

Цитата:
а иначе не стать и ни мастером и ни профи...

Я вообще плохо себе понимаю смысл этой тавтологии.
Ведь эти слова - синонимы.
Автор: akaGM
Дата сообщения: 11.06.2011 18:04
KChernov
если это вопрос ко мне, то я всего лишь обыгрывал ник...
Автор: Master_Profi
Дата сообщения: 13.06.2011 11:27
разници не играет какой ник!
Автор: akaGM
Дата сообщения: 13.06.2011 13:33
эт точно, никакой...
Автор: MERCURY127
Дата сообщения: 13.06.2011 13:54

Цитата:
браво, я как бы вводил, но видимо не нашел конкретного, а второй сайт крутой! я там начало прочитал, но дальше нет, т.к. мне надо было срочно знать и времени не было

Бгг, я эпизодически асм учу уже лет 7, и до сих пор не выучил защищенный режим и 64 бита... памяти на компе 1 гиг, и не на чем проверять идеи. Что и куда он "вводил" ???
Автор: Master_Profi
Дата сообщения: 22.06.2011 03:22

Цитата:
Бгг, я эпизодически асм учу уже лет 7, и до сих пор не выучил защищенный режим и 64 бита... памяти на компе 1 гиг, и не на чем проверять идеи. Что и куда он "вводил" ???

наверное запрос в гугл, или есть другие варианты? можно вслух. чтоб мне стало тоже также смешно
Автор: MERCURY127
Дата сообщения: 22.06.2011 08:24
Гуглом еще надо уметь пользоваться он нужен, чтоб искать ответы на конкретные, четко сформулированные узкие вопросы, типа "формат строки printf", а не для таких "как научится жить?"... Этому нужно учится самому. Приспичило тебе учить ассемблер - так будь любезен его учить, да не за три дня до сессии, а годами. Книжки читай хотя бы, да проверяй пальцами, правильно ли понял. Книжки, кстати, в шапке имеются и в основном как раз нагуглены - пример правильного использования гугла.
Автор: A1exSun
Дата сообщения: 06.08.2011 16:57
Может кто-то написать на ассемблере аналог этому коду C?

Код: bios = peekb(0xF000,0xFFFE);
Автор: akaGM
Дата сообщения: 06.08.2011 17:37
A1exSun
блин...

Код: unsigned char bios;

asm {
push 0f000h
pop es
mov bx, 0fffeh
mov al, es:[bx]
mov bios, al
}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.