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

» Assembler

Автор: Abs62
Дата сообщения: 28.10.2008 22:50
akaGM

Цитата:
там у меня по недосмотру два .code и ничего -- компил/экзек, это как?

Для tasm - нормально. Он по директивам сам разбирается, что в какой сегмент пойдёт. И такую конструкцию без проблем скушает:

Код: .code
...
.data
...
.code
...
.stack 200h
.code
...
Автор: akaGM
Дата сообщения: 28.10.2008 23:09
Abs62
ясно, спасибо...
хорошо плохо, что ты не преподаватель...
Автор: 10011
Дата сообщения: 30.10.2008 22:33
Доброго вам времени суток. Помогите пожалуйста с программой.Работа с MASM.
Дан массив из 8 элементов типа dw, посчитать количество элементов удовлетворяющих условию L ≥ Ai > M, где L = 6 и M = 20.
Заранее спасибо!
Автор: akaGM
Дата сообщения: 30.10.2008 23:03
10011
поправь вот это:
Цитата:

L ≥ Ai > M
Автор: 10011
Дата сообщения: 30.10.2008 23:12
akaGM
L >= Ai > M
Автор: akaGM
Дата сообщения: 31.10.2008 14:35
10011

6 >= Ai > 20

это как?
Автор: akaGM
Дата сообщения: 31.10.2008 16:36
10011
при условии
6 <= Ai < 20

вот тебе [more=код]
.386
.model flat, stdcall

.data
Ai dd 8 dup (0) ;1,2,3,4,5,6,7,8
nfound dd 0
count dd 0

.code

start:
;--------------------------------
lea ebx, dword ptr Ai
mov dword ptr [ebx], 1 ; заполняем Ai массив
mov dword ptr [ebx+4], 2
mov dword ptr [ebx+8], 3
mov dword ptr [ebx+12], 4
mov dword ptr [ebx+16], 5
mov dword ptr [ebx+20], 6
mov dword ptr [ebx+24], 7
mov dword ptr [ebx+28], 8 ;...

xor eax, eax
jmp @@l2
@@l1:
mov ecx, dword ptr count
inc ecx
mov dword ptr count, ecx
@@l2:
cmp dword ptr count, 8 ; кол-во элементов в массиве, if => 8 просмотрели все
jge @@l3
mov ecx, dword ptr count
cmp dword ptr [ebx+ecx*4], 6 ; if < 6 continue
jl @@l1
mov edx, dword ptr count
cmp dword ptr [ebx+edx*4], 20 ; if >= 20 continue
jge @@l1
mov eax, dword ptr nfound ; нашли один...
inc eax
mov dword ptr nfound, eax
jmp @@l1
@@l3:
; здесь регистр eax и переменная nfound сожержит число искомых элементов
; дальше делай с этим что угодно, но уже сам...
;--------------------------------
ret
end start
[/more]
Автор: 10011
Дата сообщения: 02.11.2008 11:29
спасибо
Автор: rJIA3ACTbIK
Дата сообщения: 20.11.2008 23:45
подскажите пожайлуста как сделать вывод целой и дробной части выражения (A^3+B^3)/(C-D)

переделывал программу сложения десятичных чисел выложенную здесь


Код: DSEG SEGMENT
TEXT1 DB 'Programm for calculation value of expression:',0AH,0DH,'(A^3+B^3)/(C-D)'
mes1 db "Vvedite chislo A: $"
mes2 db "Vvedite chislo B: $"
mes3 db "Vvedite chislo C: $"
mes4 db "Vvedite chislo D: $"
mes5 db "result: $"

crlf db 0Dh,0Ah,'$'
buffer db 4 ; максимальный размер буфера ввода
blength db ? ; размер буфера после считывания
bcontents:
a dw 0
b dw 0
c dw 0
d dw 0
RES dw 0
buf db 16 dup (?)
buf_end db'$'
DSEG ENDS
CODE SEGMENT
BEGIN:    ASSUME CS : CODE, DS : DSEG
    
MOV AX,DSEG
MOV DS,AX
mov dx,offset mes1
mov ah,9
int 21h ; вывести приглашение ко вводу message1
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call vvod
mov a,ax
mov dx,offset mes2
mov ah,9
int 21h ; вывести приглашение ко вводу message2
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call vvod
mov b,ax
mov dx,offset mes3
mov ah,9
int 21h ; вывести приглашение ко вводу message3
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call vvod
mov c,ax
mov dx,offset mes4
mov ah,9
int 21h ; вывести приглашение ко вводу message4
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call vvod
mov d,ax


MOV AX,A    ; А в куб
XOR DX,DX
IMUL A        

MOV RES,AX
MOV AX,A
IMUL RES
MOV RES,AX


MOV AX,B    ; B в куб
XOR DX,DX
IMUL B        
MOV BX,AX
MOV AX,A
IMUL BX
MOV B,AX


MOV AX,RES     ;А^3+B^3
add AX,BX
mov RES,AX

mov ax,c ;C-D
mov bx,d
sub ax,bx

MOV BX,AX
MOV AX,RES
XOR DX,DX
TEST AX,8000H
JZ _M
NOT DX
_M: DIV BX
MOV BX,AX
        







vvod PROC NEAR
mov dx,offset buffer
mov ah,0Ah
int 21h ; считать строку символов в буфер
mov dx,offset crlf
mov ah,9
int 21h ; перевод строки
; 76 перевод числа в ASCII-формате из буфера в бинарное число в АХ
xor di,di ; DI = 0 - номер байта в буфере
;mov ах,0h ; АХ = 0 - текущее значение результата
mov ax,0h
mov cl,blength
xor ch,ch
xor bx,bx
mov si,cx ; SI - длина буфера
mov cl,10 ; CL = 10, множитель для MUL
asc2hex:
mov bl,byte ptr bcontents[di]
sub bl,'0' ; цифра = код цифры - код символа "0",
mul cx ; иначе: умножить текущий результат на 10,
add ax,bx ; добавить к нему новую цифру,
inc di ; 90 увеличить счетчик
cmp di,si ; если счетчик+1 меньше числа символов -
jb asc2hex ; продолжить (счетчик считается от 0)
RET
vvod ENDP


ENDS CODE
END BEGIN
Автор: dvdima007
Дата сообщения: 21.11.2008 19:19
Подскажите, как на эмуляторе Emu8086 можно привести пример программы с использованием прерывания INT 11h для выдачи списка оборудования?
Автор: marrow1
Дата сообщения: 22.11.2008 14:14
помогите, пожалуйста. мне нужно данные из HEX-строки преобразовать в OID (Object Identifier) формат. Но я не знаю по какому принципу перекодирование идет.
Знаю только, что например Hex:
2b 06 04 01 05 15
в OID будет выглядеть так:
1.3.6.4.1.5.21
Кто знает дайте формулу какую-то или алгоритм. Искал много в инете, но толком ничего не нашел, может кто знает? помогите, плиз.
Автор: 1ogos
Дата сообщения: 22.11.2008 14:15
Всем доброго времени суток. Суть задачи в следующем:
размер массива: 3х3
тип данных: символьный
цель: подсчет количества всех согласных
результат: вывести на экран
Я понимаю, задача не очень сложная, но ассемблер нам дали скомканно и мутно, я уже сам начал изучать, но сделать еще не могу (да и по другим предметам завал). Буду искренне благодарен любой помощи.
Ассмблер для 8086, PENTIUM (где masm, link и тд)
Автор: SEREGAMD21
Дата сообщения: 23.11.2008 12:22
необходимо вывести на экран меню:
1)ввести строку
2)ввести символ
3)вывести строку
4)вывести символ
5)выход
С помощью клавишь управления кусором (вверх ввниз) выбирается нужный пункт меню ,по нажатию клавиши выполняется заданное действие.После выполнения действия вновь отображается меню.
Автор: akaGM
Дата сообщения: 24.11.2008 07:05
marrow1
блин...
наверняка, гугли разные...
Автор: Sanjooook
Дата сообщения: 25.11.2008 14:56
Народ, помогите чайнику! Задача такая: нужно вывести заданное число байт с клавиатуры из сегмента стека. Прошу разместить прогу или хотя бы грамотно объяснить, может быть и сам допру.
Автор: JCZYZ
Дата сообщения: 25.11.2008 20:43
Доброго всем вечера! Решила обратиться к Вам за помощью, так как не могу найти ответ на интересующий меня вопрос,ЕСЛИ ОБРАЩАЮСЬ НЕ В ТЕМУ, НЕ КИДАЙТЕСЬ ПЛИЗ... ПОМИДОРАМИ, А ТКНИТЕ НОСОМ В НУЖНУЮ ТЕМУ! дело вот в чем: я в програмировании чайник чайником, только сейчас начала читать про него...,нам задали лабораторную (на первом курсе я учусь и первая ссесия у меня) про язык ассемблер, вот такое задание:Задание № 4.
Вычислить выражения представленные в 16-ной системе, проверку осуществить с помощью программы на Ассемблере . Проверить и сравнить результат с помощью отладчика DEBUG (MS_DOS). Предоставить распечатку трассировки выполнения программы.
1. (CE + (DE-1А)*4) /3
2. ((CD+F1)-(AD+8))/2
3. (FE*(AD-1F)-1FF2)/8
4. ((CD+F1)+(AD+8))/4
5. ((CD+F)-AD)/2
6. ((CD+F1)-8))/2
7. ((1CD*2-AD))/2
8. ((CD+F1)*4-(AD+18))/2
9. ((CD-(AD/2))/2
10. ((CD+F1*2)-AD)/2


но суть вот чем, я скачала литературу про ассемблер, но не поняла самого главного для меня: вот например я сажусь за компьютер.... и что дальше... куда мне идти что нажимать, или устанавливать для начала програмирования на ассемблере.... я скачала FASM 32 и TASM 32(как было указано в литературе) но ничего у меня не устанавливается,РЕБЯТА подскажите мне пожалуйста подробное начало для входа в это програмирование, что я долджна для этого предпринять и куда входить, я ничего не могу понять....может у кого нибудь есть ссылки на такие темы именно, я не нашла таких... поделитесь кому не жалко пожалуйста!
БУДУ ОЧЕНЬ БАГОДАРНА ЗА ПОМОЩЬ И ПОНИМАНИЕ!
Автор: akaGM
Дата сообщения: 25.11.2008 20:48
JCZYZ

Цитата:
...И ПОНИМАНИЕ!

а вот нам бы понять, на кого ты, с позволения сказать, учишься,
если на первом же семестре -- и ассемблер, а?
Автор: JCZYZ
Дата сообщения: 26.11.2008 19:06
akaGM - здравствуйте! Я учусь на факультете - информационные системы и технологии! и нам сразу же дали вот такую вот контрольную!но за меня решать ее ненадо мне просто надо понять с чего это все начинается...а понять ну никак немогу...
Автор: akaGM
Дата сообщения: 26.11.2008 19:18
JCZYZ
блин, нет слов...
вряд ли лично я чем-то смогу помочь, т.к. рассказывать чтО такое язык программирования, транслятор, компилятор, линкер, а потом ещё и как запускаются на выполнение приложения в той или иной операционной системе, да ещё и будущему программисту...
нет я не умею и не смогу, извини...
Автор: JCZYZ
Дата сообщения: 26.11.2008 19:35
ну а может ты знаешь ссылку где подробно подробно рассказывается ход всех действий с самого начала... а? мне хоть чтото для начала более понятное найти бы...а как Вы учились всему этому: сами методом тыка или Вас обучали этому?
Автор: akaGM
Дата сообщения: 26.11.2008 19:48
JCZYZ
нет, не знаю...
могу только _настоятельно_ рекомендовать задать все интересующие тебя вопросы своим преподавателям -- это их работа, за это им и деньги платят...
Автор: JCZYZ
Дата сообщения: 26.11.2008 20:02
спасибо большое за совет!я так и сделаю обязательно когда начнется ссесия! просто не хотелось совсем глупо на ссесии выглядеть, вот я и постаралась хоть чтото понять!
Автор: akaGM
Дата сообщения: 26.11.2008 20:42
JCZYZ
вопросы преподавателям задают _до_ сессии, на сессии их будут задавать уже сами-знаете-кому...
а если ты и этого ещё не знаешь, то этот форум, увы, клиникой не занимается...
и вообще, что-то я не вижу здесь кнопку "сообщить"...
а, вот, нашёл... щас...

удачи и прощай...
Автор: JCZYZ
Дата сообщения: 26.11.2008 21:16
К СОЖАЛЕНИЮ ПРЕПОДАВАТЕЛЬ УЕХАЛ В КОМАНДИРОВКУ, ПОЭТОМУ ПРИШЛОСЬ ОБРАЩАТЬСЯ К ПОМОЩИ ДРУГИХ ЗНАЮЩИХ ЛЮДЕЙ, ТИПО ВАС! НО ВЫ ИЗВИНИТЕ ЕСЛИ ЧТОТО БЫЛО НЕ ТАК! ДО СВИДАНИЯ!
Автор: marrow1
Дата сообщения: 27.11.2008 00:49
akaGM

Цитата:
блин...
наверняка, гугли разные...

спасибо. но я уже гуглил, и толком ничего. к счастью разобрался уже. мне нужно было сам принцып (или алгоритм) декодирования, а не готовую программу, или же на крайняк программу с исходником, чтобы можно было разобраться.
Автор: JuWeLL
Дата сообщения: 27.11.2008 02:34
Привет, помогите пожалуйста разобраться с этой задачей...

"Перемещение курсора на следующее слово вправо/влево при нажатии на Ctrl+стрелка вправо/влево"

выход осуществляется по esc, работают tab и backspace

Буду очень признателен
Автор: akaGM
Дата сообщения: 27.11.2008 09:33
JuWeLL
и не надейся, часть текст-редактора тебе никто писать не будет, ищи готовое решение...
Автор: sadasaf
Дата сообщения: 04.12.2008 02:04

задача:дан в файле массив N десятичных чисел до 5-ти разрядов до 10000.Найти max четное число и вывести его. ваще не представляю, массив в какой системе счисления будет рассматриваться? и как его в файл занести? просто цифры через пробел забить? вообщем, сами понимаете, какой я тупой! помогите, если сможете

Добавлено:
Создать файл ААА.ТХТ ввести матрицу и столбец чисел, записать их в файл
Умножить заданую матрицу на столбец и результат дописать в файл выдать содержимое файла на экран.
Автор: sadasaf
Дата сообщения: 04.12.2008 18:08
ау

Добавлено:
Помогите решить задачку....

Записать в регистре DPTR наибольшее положительное число и его адрес из массива однобайтных чисел со знаком 30H-2FH РПД.

микропроцессор МК-51
Автор: 19pro89
Дата сообщения: 05.12.2008 18:23
Помогите решить задачу(простая).Ввести десять чисел и отсортировать их по убыванию.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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