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

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
а я так сделал?
...
действительно...
да один чёрт, тем более мои знания асма ограничиваются полным и явным описанием сегментов по старинке, я не знаю, что делают директивы (макросы?) .code .data
а ваще ты ничего не понимаешь! это типа для дата-экзекушн заготовка вот
гы
 
---
слушай, а серьёзно...
там у меня по недосмотру два .code и ничего -- компил/экзек, это как?
 
также ни фига не понимаю, почему работает мой вариант -- у меня ж там ошибка,
хотел же перепрыгнуть этот блок данных:
 
jmp start

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 22:06 28-10-2008 | Исправлено: akaGM, 22:26 28-10-2008
Abs62



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

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

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

Код:
.code
...
.data
...
.code
...
.stack 200h
.code
...


Цитата:
также ни фига не понимаю, почему работает мой вариант -- у меня ж там ошибка,  
хотел же перепрыгнуть этот блок данных:

Да нет там ошибки. Директива "end start" указывает на точку входа по метке "start:", никто не обязывает помещать её в начало сегмента - это же exe, а не com.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6079 | Зарегистр. 22-10-2005 | Отправлено: 22:50 28-10-2008 | Исправлено: Abs62, 22:56 28-10-2008
akaGM

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

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 23:09 28-10-2008
10011

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго вам времени суток. Помогите пожалуйста с программой.Работа с MASM.  
Дан массив из 8 элементов типа dw, посчитать количество элементов удовлетворяющих условию L ≥ Ai > M, где  L = 6 и M = 20.
Заранее спасибо!

Всего записей: 5 | Зарегистр. 30-10-2008 | Отправлено: 22:33 30-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
10011
поправь вот это:
Цитата:
 
L ≥ Ai > M

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 23:03 30-10-2008
10011

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
 L >= Ai > M

Всего записей: 5 | Зарегистр. 30-10-2008 | Отправлено: 23:12 30-10-2008 | Исправлено: 10011, 23:14 30-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
10011
 
6 >= Ai > 20
 
это как?

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 14:35 31-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
10011
при условии
6 <= Ai < 20
 
вот тебе код

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 16:36 31-10-2008 | Исправлено: akaGM, 23:30 01-11-2008
10011

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

Всего записей: 5 | Зарегистр. 30-10-2008 | Отправлено: 12:29 02-11-2008
rJIA3ACTbIK

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите пожайлуста как сделать вывод целой и дробной части выражения (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

 
Добавлено:
вот так короч сделал

Код:
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: $"
chast_mes    db    'Chastnoe - ','$'        
ost_mes        db    'Ostatok  - ','$'        
 
        
chastnoe    db    4    dup(0),'$'            
ostatok        db    4    dup(0),'$'    
 
a dw 0
b dw 0
c dw 0
d dw 0
RES dw 0
DSEG ENDS
STK SEGMENT STACK
DW 256 (?)
STK ENDS
 
CODE SEGMENT
BEGIN:    ASSUME CS : CODE, DS : DSEG,SS:STK
    
MOV AX,DSEG
MOV DS,AX
mov dx,offset mes1
mov ah,9
int 21h ; вывести приглашение ко вводу message1
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call inint  
mov a,ax
mov dx,offset mes2
mov ah,9
int 21h ; вывести приглашение ко вводу message2
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call inint  
mov b,ax
mov dx,offset mes3
mov ah,9
int 21h ; вывести приглашение ко вводу message3
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call inint  
mov c,ax
mov dx,offset mes4
mov ah,9
int 21h ; вывести приглашение ко вводу message4
;читаем введенную строку и преводим её в 16-ное число в регистре ах
call inint  
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 BX,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
IDIV BX    
 
       push    dx    ; сохраняем результаты
        push    ax    
 
 
        mov    AH,09h                    
        mov    DX,offset chast_mes            
        int    21h                    
 
 
; перевод частного в 10-ю форму и вывод на экран
        mov    si,3
        pop    ax
    next_ch:mov    dh,10
        div    dh
        add    ah,30h
        mov    chastnoe[si],ah
 
        cmp    al,0
        je    out_ch
        xor    ah,ah
        dec    si
        jmp    next_ch
        
    out_ch:    mov    ah,09h
        mov    dx,offset chastnoe
        int    21h
 
         mov     dl, 0Dh
        int     21h
        mov     dl, 0Ah
        int     21h
 
        mov    AH,09h                    
        mov    DX,offset ost_mes            
        int    21h
 
    ; перевод остатка в 10-ю форму и вывод на экран        
        mov    si,3
        pop    ax
 
 
      next_ost: mov    dh,10
        div    dh
        add    ah,30h
        mov    ostatok[si],ah
 
        cmp    al,0
        je    out_ost
        xor    ah,ah
        dec    si
        jmp    next_ost
        
    out_ost:mov    ah,09h
        mov    dx,offset ostatok
        int    21h
 
inint   proc    near
        push    cx
        push    dx
        push    bx
        push    si
; В SI будет признак знака, в BX - число, CX тоже пригодится.
        xor     si, si
        xor     bx, bx
        xor     cx, cx
; Введём первый символ.
        mov     ah, 01h
        int     21h
; Здесь и только здесь может попасться минус. Если это не так,
; перейдём к обычной обработке символа.
        cmp     al, '-'
        jne     short @ii1
; Иначе установим признак знака и
        inc     si
; введём следующий символ.
@ii0:   mov     ah, 01h
        int     21h
; Если символ за '9', то ввод некорректный, прекратим этот беспредел.
@ii1:   cmp     al, 39h
        ja      short @ii2
; Переводим символ в число. Если при этом получится нечто отрицательное,
; то исходный символ перед '0', значит, ввод можно прерывать.
        sub     al, 30h
        jb      short @ii2
; Итак, в AL цифра, которую нужно приписать справа к уже имеющемуся
; в BX числу. Поместим цифру из AL в CX. Именно для этого он обнулялся.
        mov     cl, al
; Умножим текущий результат на 10.
        shl     bx, 1   ; BX = 2 * bx
        mov     ax, bx  ; AX = 2 * bx
        shl     ax, 2   ; AX = 8 * bx
        add     bx, ax  ; BX = 10 * bx
        add     bx, cx  ; BX = 10 * bx + al
; И так, пока вводят цифры.
        jmp     short @ii0
; Когда ввели нецифру, посмотрим, надо ли менять знак,
@ii2:   test    si, si
        jz      short @ii3
        neg     bx
; перейдём на новую строку
@ii3:   mov     ah, 02h
        mov     dl, 0Dh
        int     21h
        mov     dl, 0Ah
        int     21h
; и запишем результат в AX.
        mov     ax, bx
        pop     si
        pop     bx
        pop     dx
        pop     cx
        ret
inint   endp
 
ENDS CODE
END BEGIN
 

 
теперь нужно другую задачу решить
матрица находится в ОП
тип данных беззнаковые слова
найти минимальный и максимальный элемент матрицы и их координаты а также посчитать сумму главной диагонали
загнать в файл исходную матрицу и все полученные значения
 
 

Всего записей: 1 | Зарегистр. 20-11-2008 | Отправлено: 00:45 21-11-2008
dvdima007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как на эмуляторе Emu8086 можно привести пример  программы с использованием прерывания INT 11h для выдачи списка оборудования?

Всего записей: 1 | Зарегистр. 06-10-2008 | Отправлено: 20:19 21-11-2008
marrow1

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите, пожалуйста. мне нужно данные из HEX-строки преобразовать в OID (Object Identifier) формат. Но я не знаю по какому принципу перекодирование идет.  
Знаю только, что например Hex:
2b 06 04 01 05 15  
в OID будет выглядеть так:
1.3.6.4.1.5.21
Кто знает дайте формулу какую-то или алгоритм. Искал много в инете, но толком ничего не нашел, может кто знает? помогите, плиз.

Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 15:14 22-11-2008 | Исправлено: marrow1, 15:19 22-11-2008
1ogos

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени суток.  Суть задачи в следующем:
размер массива: 3х3
тип данных: символьный
цель: подсчет количества всех согласных
результат: вывести на экран
Я понимаю, задача не очень сложная, но ассемблер нам дали скомканно и мутно, я уже сам начал изучать, но сделать еще не могу (да и по другим предметам завал). Буду искренне благодарен любой помощи.
Ассмблер для 8086, PENTIUM (где masm, link  и тд)

Всего записей: 1 | Зарегистр. 22-11-2008 | Отправлено: 15:15 22-11-2008
SEREGAMD21

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
необходимо вывести на экран меню:
1)ввести строку  
2)ввести символ  
3)вывести строку
4)вывести символ
5)выход
С помощью клавишь управления кусором (вверх ввниз) выбирается нужный пункт меню ,по нажатию клавиши выполняется заданное действие.После выполнения действия вновь отображается меню.

Всего записей: 5 | Зарегистр. 16-10-2008 | Отправлено: 13:22 23-11-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
marrow1
блин...
наверняка, гугли разные...

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 08:05 24-11-2008 | Исправлено: akaGM, 08:24 24-11-2008
Sanjooook

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, помогите чайнику! Задача такая: нужно вывести заданное число байт с клавиатуры из сегмента стека. Прошу разместить прогу или хотя бы грамотно объяснить, может быть и сам допру.

Всего записей: 1 | Зарегистр. 22-11-2008 | Отправлено: 15:56 25-11-2008
JCZYZ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем вечера! Решила обратиться к Вам за помощью, так как не могу найти ответ на интересующий меня вопрос,ЕСЛИ ОБРАЩАЮСЬ НЕ В ТЕМУ, НЕ КИДАЙТЕСЬ ПЛИЗ... ПОМИДОРАМИ, А ТКНИТЕ НОСОМ В НУЖНУЮ ТЕМУ! дело вот в чем: я в програмировании чайник чайником, только сейчас начала читать про него...,нам задали лабораторную (на первом курсе я учусь и первая ссесия у меня) про язык ассемблер, вот такое задание:Задание № 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(как было указано в литературе) но ничего у меня не устанавливается,РЕБЯТА подскажите мне пожалуйста подробное начало для входа в это програмирование, что я долджна для этого предпринять и куда входить, я ничего не могу понять....может у кого нибудь есть ссылки на такие темы именно, я не нашла таких... поделитесь кому не жалко пожалуйста!
БУДУ ОЧЕНЬ БАГОДАРНА ЗА ПОМОЩЬ И ПОНИМАНИЕ!

Всего записей: 5 | Зарегистр. 23-11-2008 | Отправлено: 21:43 25-11-2008
akaGM

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

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

а вот нам бы понять, на кого ты, с позволения сказать, учишься,  
если на первом же семестре -- и ассемблер, а?

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 21:48 25-11-2008
JCZYZ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM - здравствуйте! Я учусь на факультете - информационные системы и технологии! и нам сразу же дали вот такую вот контрольную!но за меня решать ее ненадо мне просто надо понять с чего это все начинается...а понять ну никак немогу...

Всего записей: 5 | Зарегистр. 23-11-2008 | Отправлено: 20:06 26-11-2008
akaGM

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

Всего записей: 24103 | Зарегистр. 06-12-2002 | Отправлено: 20:18 26-11-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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