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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтоб "C:\MASM32\bin\bldall.bat" не править.
 
je @F прыгает к последующему @@: , @B - к предыдущему.  Это удобно, если код программы линеарный без  JMP макаронов.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 15:25 24-10-2012 | Исправлено: ne_viens, 15:32 24-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это удобно чтоб не выдумывать постоянно говорящие имена переходам
 
ne_viens
сенки. вот еще более крутая прога в частности умеющая патчить екзешники для /3G ключа
http://ntcore.com/exsuite.php

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:54 24-10-2012 | Исправлено: bomzzz, 15:54 24-10-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ясно...
 
ml /coff
 
а масм дефолтом теперь OMF генерит что ли?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 15:56 24-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
70000000h - а что эти загадочные письмена доказывают, зачем выделять 1792 мб?
 
akaGM

Цитата:
кстати, почему бат?  

http://wasm.ru/article.php?article=drvw2k03

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:07 24-10-2012 | Исправлено: bomzzz, 16:10 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>akaGM
Незнаю, я с ctrl-c, ctrl-v из bldall.bat взял. Он там уже лет 10 лежит
 
>bomzzz
70000000h- это максимальный кусок памяти, который разом можно выделить.
 
Нет смысла патчить готовые проги на  /LARGEADDRESSAWARE , если код эту всю память не сможет заюзать. Вот если сам пишешь, например:

Код:
 
    mov ebx, 70000000h
    invoke VirtualAlloc, 0, ebx, MEM_COMMIT, PAGE_READWRITE
    mov edi, eax
    mov ecx, ebx
    shr ecx, 2
    xor eax, eax
    rep stosd
 
    mov ebx, 60000000h
    invoke VirtualAlloc, 0, ebx, MEM_COMMIT, PAGE_READWRITE
    mov edi, eax
    mov ecx, ebx
    shr ecx, 2
    xor eax, eax
    rep stosd
 

, то в Task Managere прога занимает 3415840КB.
 
А код:

Код:
 
start:
    invoke VirtualAlloc, 0, 100000h, MEM_COMMIT, PAGE_READWRITE
    or eax, eax
    je @F
 
    mov edi, eax
    mov ecx, 100000h /4
    rep stosd
    jmp start
 

вообще сумасшедшие 4095008KB откусывает.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:27 24-10-2012 | Исправлено: ne_viens, 16:59 24-10-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
мелкие сами в своём компиляторе не уверены :)
 
bomzzz
ясно...

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 16:37 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MASM32 детище hutch'a.
Он взял MASM и добавил туда *.inc, *.lib, примитивную среду разработки (qeditor), примеры и ещё кучку мелочи.
Программирование я именно с масма начал изучать.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:52 24-10-2012
akaGM

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

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 16:59 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M$ MASM- это ml.exe + link.exe
MASM32- среда разработки, на которой можно полноценные проги писать.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 17:02 24-10-2012
akaGM

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

Цитата:
MASM32- среда разработки, на которой можно полноценные проги писать

а на масме неполноценные? :)
 
в смысле у этого чуда своя ИДЕ?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 17:12 24-10-2012
bomzzz



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

Цитата:
Нет смысла патчить готовые проги на  /LARGEADDRESSAWARE , если код эту всю память не сможет заюзать.  

пачиму? может я вчера на ночь глядя уже читал невнимательна - без етага патча или ключа проги вообще не могут использовать адреса выше 2 гиг
 
Добавлено:
http://forall.ru-board.com/egor23/online/FAQ/Virtual_Memory/Limits_Virtual_Memory.html
 
 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:33 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я имел ввиду, что, а если проге 3GB и не надо? Ведь не каждая прога- Photoshop.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 17:54 24-10-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здрасьте!!! Пишу прогу по переводу двоичного числа в двоично-десятичный. Вот что получилось:
CALCBUFH - старший байт двоично-десятичного числа
CALCBUFM - средний байт  
 CALCBUFL -младший байт
CALCBUFL      DATA 032h
;                 CALCBUFM      DATA 031h
;                 CALCBUFH      DATA 030h
; ===============================================================================
BIN2DEC:                
 
                                mov  DPH,CALCBUFM
                                mov  DPL,CALCBUFL
 
                                mov  CALCBUFH,#000h
                                mov  CALCBUFM,#000h
                                mov  CALCBUFL,#000h
 
                                mov  B,#010h
BIN2DEC_1:
                                mov  A,DPL
                                rlc  A
                                mov  DPL,A
                                mov  A,DPH
                                rlc  A
                                mov  DPH,A
 
                                mov  A,CALCBUFL
                                rlc  A
                                da   A
                                mov  CALCBUFL,A
                                mov  A,CALCBUFM
                                rlc  A
                                da   A
                                mov  CALCBUFM,A
                                mov  A,CALCBUFH
                                rlc  A
                                da   A
                                mov  CALCBUFH,A
                                djnz B,BIN2DEC_1
 
Мне кажется что можно проще сделать или нет?
                               

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 18:53 24-10-2012
bomzzz



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

Цитата:
двоично-десятичного

сжатый десятичный формат?

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нет не в сжатый. Например 14=0001 0100

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 19:52 24-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
14 походу шестандцатиричное число тута? 20d=14h=10100b?
 
я не особо в этом синтаксисе понимаю, алгоритм - просто делишь на 10 число и получаешь в остатке цифру последнюю
 
Добавлено:

Цитата:
.386
 
.model flat, stdcall  
option casemap :none  
 
include \MASM32\INCLUDE\windows.inc
include \MASM32\INCLUDE\masm32.inc
include \MASM32\INCLUDE\gdi32.inc
include \MASM32\INCLUDE\user32.inc
include \MASM32\INCLUDE\kernel32.inc
includelib \MASM32\LIB\masm32.lib
includelib \MASM32\LIB\gdi32.lib
includelib \MASM32\LIB\user32.lib
includelib \MASM32\LIB\kernel32.lib
 
.data
mestitle        db "Bomz",0
Number            dd 1234567890
SummaryForm        db 'Всего ссылок: '
            db 20 dup(0)
 
.data?
String             db 20 dup(?)
 
.code
start:
 
lea esi, String+20
mov ecx, esi
mov eax, Number
mov ebx, 10
 
@@:
dec esi
xor edx, edx
div ebx
add edx, 48
mov byte ptr [esi], dl
cmp eax, 0
jnz @B
 
sub ecx, esi
lea edi, SummaryForm+14
rep movsb
mov byte ptr[edi],0
 
invoke MessageBox,0,addr SummaryForm,ADDR mestitle,MB_OK + MB_ICONASTERISK
invoke ExitProcess,0
 
end start

это вообще для 32 бит на масме

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:30 24-10-2012 | Исправлено: bomzzz, 20:32 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
14 -> 0001 0100 это сжатый, несжатый будет 14 -> 00000001 00000100
 
da не работает после rlc, только после add, addc, subb
 
Рабочий код:

Код:
 
; AVR bin2BCD16() algo implementation
ORG 0
;--------------------- init
    mov R2, #0eeh   ;in loByte
    mov R3, #0ddh   ;in hiByte
 
    mov R4, #0      ;loOut (10 & 1)
    mov R5, #0      ;midOut(1000 & 100)
    mov R6, #0      ;hiOut (100000 & 10000)
    mov R7, #16     ;bit counter
 
;--------------------- shift bits in
L1:
    mov A, R2
    rlc A
    mov R2, A
    mov A, R3
    rlc A
    mov R3, A
 
    mov A, R4
    rlc A
    mov R4, A
    mov A, R5
    rlc A
    mov R5, A
    mov A, R6
    rlc A
    mov R6, A
 
    djnz R7, L2     ;is last bit?
    sjmp L6         ;yes, goto end
 
;--------------------- decimal adjust 3 output bytes
L2:
    mov R0, #6          ;ptr out
L3:
    mov A, @R0
    add A, #3
    jnb 0e3h, L4   ;is bit 3 of A set?
 
    mov @R0, A     ;yes, add 3
L4:
    mov A, @R0
    add A, #30h
    jnb 0e7h, L5   ;is bit 7 of A set?
 
    mov @R0, A     ;yes, add 0x30
L5:
    dec R0
    cjne R0, #3, L3
 
;--------------------- next bit
    sjmp L1
 
L6:
    nop
END
 

 
Код надо проверять в симуляторе, так как всегда будут ошибки.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 20:36 24-10-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно в кратце объяснить алгоритм после метки L2

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 20:41 24-10-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://en.wikipedia.org/wiki/Double_dabble

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 21:09 24-10-2012
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:20 24-10-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