Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как то обычно не до того чтоб проверять как работать будет. может один компилятор сожрет а другой нет
 
Добавлено:
32 битный масм обычно ругается если не написать что требуется байт слово или два слова. вот ему скобки будут нужны

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:35 24-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем, понял так, что в скобках располагается адрес. Если там имя переменной, то в ней должен быть адрес.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:47 24-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Перед выводом на экран слова из массива структур нужно проверять, поместиться ли оно полностью в текущей строке, если нет - выводить на следующей. Структура уже заполнена, слов там штук 60. Все заканчиваются знаком $.
Что лучше сделать, добавить в структуру запись о длине слова (+60 байт, время потраченное на подсчет и заполнение ручками), или перед выводом на экран, искать в слове знак $, таким образом определяя его длину? (походу медленнее производительность)

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 21:53 24-04-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Производительность меньше не станет, особенно если оптимизировать через скасб, но зато гибкость во втором случае больше

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 22:47 24-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
Я и думал через SCASB делать Ты прав.
 
Добавлено:
Но все-таки посчитал и дописал ручками в таблицы... Расширятся они не будут.
Просто там все регистры заняты и пришлось бы еще ES переустанавливать на сегмент данных, да еще и хз как в DI занести конкретно нужное слово из таблицы.
В общем, работает

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:58 24-04-2012 | Исправлено: A1exSun, 00:08 25-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
как в DI занести конкретно нужное слово из таблицы.  


Цитата:
Mtype    db 'Format is unknown',0
    db 'A5.25" floppy, with 1.2MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.44MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 2.88MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 20.8MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 720KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 360KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 320KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 320KB and 1024 bytes/sector.',0
    db 'A5.25" floppy, with 180KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 160KB and 512 bytes/sector.',0
    db 'Removable media other than floppy.',0
    db 'Fixed hard disk media.',0
    db 'A3.5" floppy, with 120MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 640KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 640KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 720KB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.2MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.23MB and 1024 bytes/sector.',0
    db 'A5.25" floppy, with 1.23MB and 1024 bytes/sector.',0
    db 'A3.5" floppy, with 128MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 230MB and 512 bytes/sector.',0
    db 'An 8" floppy, with 256KB and 128 bytes/sector.',0
    db 'A3.5" floppy, with 200MB and 512 bytes/sector. (HiFD).',0
    db 'A3.5" floppy, with 240MB and 512 bytes/sector. (HiFD).',0
    db 'A3.5" floppy, with 32MB and 512 bytes/sector.',0
baza    dw 0,18,66,114,162,210,257,305,353,402,450,498,533,556,603,650,698,746,793,842,892,939,986,1033,1088,1143,1189
 

вот так примерно

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 02:33 25-04-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С той лишь разницей что генерацию таблицы длин и начал можно поручить компилятору...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 09:01 25-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
точно можно, через -$. написькай примерчик плиз. я как то этим $ никогда не пользовался
а наверно надо было дать каждой строке имя и отнять офсеты
 
Добавлено:
вообщем я просто прогу сляпал которая мне строку длин дала, осталось только ее переписать, получается неудобно потому что у меня в одной проге иногда массив меняется

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 09:04 25-04-2012 | Исправлено: bomzzz, 09:09 25-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz

Код:
feature_1_ecx_table label
    feature_entry       <00000001h, "SSE3$">            ; [0]
    feature_entry       <00000002h, "PCLMULQDQ$">       ; [1]
    feature_entry       <00000004h, "DTES64$">          ; [2]
    feature_entry       <00000008h, "MONITOR$">         ; [3]
    feature_entry       <00000010h, "DS-CPL$">          ; [4]
    feature_entry       <00000020h, "VMX$">             ; [5]
    feature_entry       <00000040h, "SMX$">             ; [6]
    feature_entry       <00000080h, "EIST$">            ; [7]
    feature_entry       <00000100h, "TM2$">             ; [8]
    feature_entry       <00000200h, "SSSE3$">           ; [9]
    feature_entry       <00000400h, "CNXT-ID$">         ; [10]
    feature_entry       <00001000h, "FMA$">             ; [12]
    feature_entry       <00002000h, "CMPXCHG16B$">      ; [13]
    feature_entry       <00004000h, "XTPR$">            ; [14]
    feature_entry       <00008000h, "PDCM$">            ; [15]
    feature_entry       <00020000h, "PCID$">            ; [17]
    feature_entry       <00040000h, "DCA$">             ; [18]
    feature_entry       <00080000h, "SSE4.1$">          ; [19]
    feature_entry       <00100000h, "SSE4.2$">          ; [20]
    feature_entry       <00200000h, "x2APIC$">          ; [21]
    feature_entry       <00400000h, "MOVBE$">           ; [22]
    feature_entry       <00800000h, "POPCNT$">          ; [23]
    feature_entry       <01000000h, "TSC-DEADLINE$">    ; [24]
    feature_entry       <02000000h, "AES$">             ; [25]
    feature_entry       <04000000h, "XSAVE$">           ; [26]
    feature_entry       <08000000h, "OSXSAVE$">         ; [27]
    feature_entry       <10000000h, "AVX$">             ; [28]
feature_1_ecx_table_count = ($ - offset feature_1_ecx_table) / (size feature_entry)

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 10:46 25-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ни фига не понял, это для какого ассемблера?

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:10 25-04-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Масм/Тасм

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 11:31 25-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Забыл, выше описана структура:

Код:
feature_entry    struc
    feature_mask    dd 0
    feature_msg     db 16 dup(0)
feature_entry    ends

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 11:42 25-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а ну так лучше

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:50 25-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
    DX:BX = 32-bit physical address of the locked block
 
This function locks an extended memory block and returns
its base address as a 32-bit physical address.  Locked memory blocks
are guaranteed not to move.  The 32-bit pointer is only valid while  
the block is locked.  Locked blocks should be unlocked as soon as  
possible.
 

 
подскажите как это будет. вот так?
mov ax, dx
shl eax, 16
mov ax, bx
 
[eax]  
 
и второе:
mov word ptr[address], dx
mov word ptr[address+2],bx
mov eax, dword ptr [address]
 
[eax]
 
Добавлено:
не понятно как проверить. если просто писать и читать по этому адресу все конечно прочитается, но как понять что попал именно туда куда надо

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:54 26-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а как директиву use16 use32 использовать в середине кода - вообще можно в середине кода перейти в 32 битный код, а потом вернуться?

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:18 27-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пол ехе будет 32, а остальное 64...
что такое "перейти на код"?

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 19:47 27-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну чтоб часть кода компилятор компилировал как использующий 16 битную адресацию, а часть как 32 битную. не знаю как правельно сказать.
USE - директива

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:53 27-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mov ax, 123
 
вот это какой код?

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 21:42 27-04-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
он будет одинаково выполняться
 
Добавлено:
http://www.opennet.ru/docs/RUS/nasm/nasm_ru9.html
Глава 9: Смешивание 16- и 32-битного кода.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:47 27-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
          jmp 0x1234:0x56789ABC  ; ошибка!
          jmp dword 0x1234:0x56789ABC  ; правильно
ну так и пиши правильно, я всегда об этом говорю, писать надо правильно, испортится оно само...
 
хотя вообще не ясно...
используешь 32-разрядные регистры, корректно исполнятся будет только на 32/64
64-регистры -- только х64, чего тут ещё хотеть...

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 21:59 27-04-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru