Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
_Lori_
9 / 9 / 3
Регистрация: 06.05.2013
Сообщений: 24
1

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

14.01.2016, 13:01. Просмотров 305. Ответов 2
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста с цепочечными командами.
Была лаба и дали задание сделать тоже самое, только с регистрами DS:SI, ES: DI и цепочечными командами. Почитала, ужаснулась и въехать не могу. Помогите плииз.
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
64
65
66
67
68
69
70
71
72
73
74
    
        name    ex_swap ; начало программного модуля
    ; Определение сегмента данных
_data1  segment para public 'DATA'
i       dw      5
_data1  ends
 
_data2  segment para public 'DATA'
j       dw      6
_data2  ends
 
 
    ; Определение сегмента стека
_stack segment para stack 'STACK'
       dw   100 dup(?)
_stack ends 
    ; Определение кодового сегмента
_exch  segment  para public 'CODE'
       assume   cs:_exch, ds:_data1, es:_data2, ss:_stack
main   proc far
      ; 1-я фаза инициализации EXE программы
      ; подготовка стека к завершению программы командой ret      
       push ds         ; сохранить DS в стеке
                       ; в DS изначально находится базовый адрес программного сегмента
     push es 
       xor  ax,ax      ; обнулить AX
       push ax         ; записать 0 в стек
       ; 2-я фаза инициализации EXE программы
       ; подготовка регистра DS. Он должен содержать базовый адрес сегмента данных
       mov si,_data1
       mov  ds,si    
     push   ds
     lea    si, i
     push   si
      mov  di,_data2
       mov  es,di
     push   es  
     lea    di, j
     push   di
       
     call exchangenum
       ret     
main   endp   
     
exchangenum proc
       ; cохранение используемых регистров в стеке     
           
       push bx
       push bp     
       push ax
       push dx
       push ds
       push es
       mov  bp, sp   
       lds  bx, [bp]+14
       mov  di, [bx]       
       lds  bx, [bp]+18
       mov  dx, [bx]
       lds  bx, [bp]+14
       mov  [bx], dx
         lds  bx, [bp]+18
         mov  [bx], ax
 
       pop es      
       pop ds 
       pop dx
       pop ax      
       pop bp 
       pop bx      
       ret  8
exchangenum endp       
_exch  ends     
    
        end     main        ; конец описания программного модуля
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2016, 13:01
Ответы с готовыми решениями:

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

Поменять в матрице четные столбцы с нечетными используя цепочечные команды
Задача: Поменять в матрице четные столбцы с нечетными используя цепочечные команды. Уже...

Используя цепочечные команды, выполнить сохранение содержимого регистра AX в область по адресу PRLINE +5
Имеются следующие определения: DATASG SEGMENT PARA CONAME DB ‘SPACE EXPLORERS INC.’ PRLINE DB...

Поменять местами два числа, используя процедуру
10.поменять местами два числа,используя процедуру

Поменять местами два числа, не используя дополнительную переменную
Даны два числа x и y ,поменять их значения местами не используя дополнительную переменную....

2
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,513
Записей в блоге: 5
14.01.2016, 21:06 2
Assembler
1
2
3
4
5
   STOSB  - запись из AL в DI;
   LODSB  - чтение в AL из SI;
   MOVSB  - копирование из SI в DI;
   CMPSB  - сравнивает байт DI, с байтом SI (сравнивает строки);
   SCASB  - сравнивает байт AL, с байтом DI (поиск символа в строке).
0
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,538
15.01.2016, 03:41 3
Цитата Сообщение от _Lori_ Посмотреть сообщение
Почитала, ужаснулась и въехать не могу
http://www.cyberforum.ru/assembler-articles/thread1005284.html http://www.cyberforum.ru/cgi-bin/latex.cgi?\to "Глава 17. СТРОКОВЫЕ КОМАНДЫ"
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2016, 03:41

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

Поменять местами два массива в памяти, используя стек
Здравствуйте! Есть задание (поменять местами два массива в памяти, используя стек), вот решение: N...

Поменять местами два массива в памяти, используя стек
Здравствуйте! Есть задание (поменять местами два массива в памяти, используя стек), вот решение: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru