0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
1

Написать программу на языке ассемблера

17.11.2016, 14:11. Показов 2888. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. Написать программу на языке ассемблера, в которой:
– объявить массив типа BYTE на 256 элементов и заполнить массив кодами символов из таблицы ASCII;
– занести в (5*n)-ый элемент массива (n – номер студента по журналу) значение из регистра AX;
– поменять местами (3*n)-ый и (4*n)-ый элементы массива, используя команду XCHG;
– скопировать 5 элементов массива, начиная с (2*n)-го элемента, в позиции элементов того же массива, начиная с (2*n+10)-го элемента, используя команду MOVSx и команды загрузки полного указателя;
– заменить первые 10 элементов массива произвольными значениями, указанными в таблице перекодировки.
2. Исходные данные и результаты всех операций вывести на экран.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2016, 14:11
Ответы с готовыми решениями:

Написать программу на языке ассемблера
Написать программу на языке ассемблера, использующую функции стандартного ввода-вывода, выполняющую...

Написать программу на языке ассемблера на видео режимы
По возможности с коментариямы. Написать программу на языке ассемблера, которая: переводит...

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

Написать программу на языке ассемблера, которая в графическом режиме рисует прямоугольник
Народ, пожалуйста помогите. Написать программу на языке ассемблера, которая в графическом режиме...

10
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,121
Записей в блоге: 12
17.11.2016, 20:44 2
Правила форума:
4.3. Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
5.4. Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
0
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
18.11.2016, 05:05 3
добавлю еще пункт
5.16 => Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема

Добавлено через 2 минуты
добавлю еще пункт
5.16 => Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
18.11.2016, 13:15  [ТС] 4
вариант 1

Добавлено через 1 минуту
Assembler
1
2
3
4
LEA BX, tbl ;в BX смещение таблицы
    MOV AL, 3   ;в AX смещение внутри таблицы
    XLAT            ;замена содержимого регистра AL
                ;на код 4-го символа из таблицы
а как все это собрать в код
0
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,121
Записей в блоге: 12
18.11.2016, 13:47 5
Цитата Сообщение от Ak_Dmitry Посмотреть сообщение
а как все это собрать в код
В смысле как собрать? Это и есть код.
Только это кусок кода из последнего подпункта 1 пункта. Там al будет меняться от 0 до 9.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
18.11.2016, 14:12  [ТС] 6
А как выглядет весь код ?
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
25.11.2016, 14:00  [ТС] 7
Assembler
1
2
3
array [256] of byte
mov(5) ax
xchg (3),(4)
а как скопировать 5 элементов массива, начиная с (2*n)-го элемента, в позиции элементов того же массива, начиная с (2*n+10)-го элемента, используя команду MOVSx и команды загрузки полного указателя;
– заменить первые 10 элементов массива произвольными значениями, указанными в таблице перекодировки.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
29.11.2016, 10:02  [ТС] 8
Написать программу на языке ассемблера, в которой:
– объявить массив типа BYTE на 256 элементов и заполнить массив кодами символов из таблицы ASCII;
– занести в (5*n)-ый элемент массива (n =1 ) значение из регистра AX;
– поменять местами (3*n)-ый и (4*n)-ый элементы массива, используя команду XCHG;
– скопировать 5 элементов массива, начиная с (2*n)-го элемента, в позиции элементов того же массива, начиная с (2*n+10)-го элемента, используя команду MOVSx и команды загрузки полного указателя;
– заменить первые 10 элементов массива произвольными значениями, указанными в таблице перекодировки.


array [256] of byte
mov(5) ax
xchg ax, [3:4] Правильно ли я делаю ?
0
Модератор
Эксперт по электронике
8475 / 4334 / 1642
Регистрация: 01.02.2015
Сообщений: 13,455
Записей в блоге: 8
29.11.2016, 10:34 9
Лучший ответ Сообщение было отмечено Ak_Dmitry как решение

Решение

Нет. Абсолютно неправильно.
Так делаются первые 3 пункта.
Пункт 4 сделайте самостоятельно - прочтите хоть первые 10 страниц учебника и методички.
Процедуру ShowResult я не реализовал, т.к. не знаю, что вам нужно. Могу лишь предположить, что вывод реализовать не функциями DOS, а функциями BIOS для вывода именно символов, а не выполнения команд управляющих символов, соответствующих кодам от 0 до 31.
ShowResult тоже сделайте самостоятельно.
Assembler
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
.model small
.stack 256
.data
    array   BYTE    256 dup(?)
    CrLf    db  0dh, 0ah, '$'
    N   equ 13      ; номер студента по журналу
.code
main:
    mov ax, @data
    mov ds, ax
 
;***************************
    lea si, array
    mov cx, 256
    mov ax, 0
@@FillArray:
    mov [si], al
    inc si
    inc al
    loop    @@FillArray
 
    call    ShowResult
;***************************
    lea si, array
    mov bx, 5
    mov ax, N
    mul bl
    mov bx, ax
 
    mov ax, 1234h
    mov [si+bx], ax
 
    call    ShowResult
;***************************
    lea si, array+3*N
    lea di, array+4*N
 
    mov al, [si]
    xchg    al, [di]
    xchg    al, [si]
 
    call    ShowResult
;***************************
 
@@exit: ;выход
    mov ax, 4c00h ;стандартное завершение программы
    int 21h
 
ShowResult proc
    push    ax
    push    cx
    push    dx
    push    di
 
    pop di
    pop dx
    pop cx
    pop ax
 
    ret
ShowResult endp
 
end main
1
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 27
29.11.2016, 14:46  [ТС] 10
Не могу запустить код программы в эмуляторе ассемблер. или его еще надо где то запускать

Добавлено через 14 минут
Выдает (13) wrong parameters: LEA si, array
(13) probably no zero prefix for hex; or no 'h' suffix; or wrong addressing; or undefined var: array
0
Модератор
Эксперт по электронике
8475 / 4334 / 1642
Регистрация: 01.02.2015
Сообщений: 13,455
Записей в блоге: 8
29.11.2016, 15:37 11
Я компилировал в masm32. Ошибок не было.

Подождите немного - я уже установил контакты с "русскими хакерами" из новостей. Они обещали "добыть" ответы на вопросы:
- изменялась ли программа
- название эмулятора ассемблера
- как им пользовался Ak_Dmitry
- откуда взялось сообщение
Цитата Сообщение от Ak_Dmitry Посмотреть сообщение
(13) probably no zero prefix for hex; or no 'h' suffix; or wrong addressing; or undefined var: array
"Русские хакеры" просили передать вам просьбу - не отключаться от интернета ещё часик.

Добавлено через 1 минуту
--------------------
Если в вашем эмуляторе array это зарезервированное слово - замените его везде на MyArray.
0
29.11.2016, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2016, 15:37
Помогаю со студенческими работами здесь

Написать программу на языке ассемблера, которая выводит все символы таблицы кодов ASCII на экран в указанную позицию курсора
Народ, пожалуйста помогите. Написать программу на языке ассемблера, которая выводит все символы...

Написать уравнение на языке ассемблера
Написать уравнение z=48/(x/y)+12*(x-y) на языке ассемблера. И если не сложно прокомментировать его.

Составить программу на языке ассемблера:
Составить программу на языке ассемблера:

Программа на языке ассемблера
Ребята, помогите пожалуйста, у меня в середине программы нужно записать содержание аккумулятора в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru