Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Сравнение строк http://www.cyberforum.ru/asm-beginners/thread1587196.html
Нужно сравнить каждый символ строки с символом 'a' и, если есть совпадение, распечатать эту строку. Но код почему-то не работает, не могу понять где ошибка. Помогите пожалуйста разобраться. .MODEL...
Последовательность, массив, вывод Assembler
Задана последовательность символов, заканчивающаяся точкой. Подсчитать количество битов в состоянии 0 для каждого символа. Создать новый массив, который содержит эти значения для каждого символа....
Assembler Сколько различных 3-х значных чисел (без повторения цифр), можно составить из цифр 0,2,3,5,6 (первая цифра 5)
Не могу решить пример по Assembler (masm32).Помoгите Сама задача : Сколько различных трёхзначных чисел (без повторения цифр), можно составить из цифр 0,2,3,5,6, таких, в которых цифра 5 первая; ...
Assembler Теория 1.Каков диапазон беззнаковых чисел допустим в программах 16-ти разрядного микропроцессора? 2.Каков диапазон чисел со знаком допустим в программах 16-ти разрядного микропроцессора? http://www.cyberforum.ru/asm-beginners/thread1586508.html
Assembler Найти наиболее часто встречающееся в массиве число http://www.cyberforum.ru/asm-beginners/thread1586482.html
Доброго времени суток, есть массив целых чисел, как найти наиболее часто встречающееся число? Помогите плз. .model small .stack 100h .data massiv dw 80 dup(?) msg1 db 'Vvodite elementi...
Нечетные элементы заменить на символ с ASCII кодом n Assembler
В чём проблема? mov al, n; передаю код ascii в шестнадцатеричном формате mov bx,1 lea di, str_2 k: mov , al ; ругается вот на эту строку(никакой ошибки нет, просто прерывается) ...
Assembler Создание программ не линейной структуры
Доброе время суток, очень нужно решить 2 задачи, буду огромно благодарен за помощь: 1) Задано натуральное число, диапазон значений слово. Сформировать число обратное к заданному. (123->321). 2)...
Assembler Работа с массивом use16 org 100h mov dx,mas mov cx, again: neg jna metka1 neg add ,5 http://www.cyberforum.ru/asm-beginners/thread1586281.html
Assembler Вызов ассемблерной процедуры из Си (найти количество символов в строке) http://www.cyberforum.ru/asm-beginners/thread1586150.html
Программа ищет длину заданной строки.При первом запуске выводит то число, которое надо, а после, постоянно выводит цифру 3. Помогите пожалуйста. #include <stdio.h> extern "C" {int...
Assembler Произведение чисел Приветствую коллеги. Подскажите пожалуйста, почему не выходит ответ? Где я оступился? Определите произведение всех чисел кратныx 5 на отрезке от A до B .model small ; директива организации... http://www.cyberforum.ru/asm-beginners/thread1586144.html
prostou
0 / 0 / 0
Регистрация: 25.10.2015
Сообщений: 11
23.11.2015, 11:22  [ТС] 0

Записать результат в массив

23.11.2015, 11:22. Просмотров 2286. Ответов 7
Метки (Все метки)

Ответ

Цитата Сообщение от Argogo Посмотреть сообщение
И сохраняешь результат не в память, адресуемую регистром DI, а в регистр.
Я сделал все,как вы сказали и да. стало все работать: правильно считать и т.д. но я не понял в какой регистр сохранять остаток,чтобы в дальнейшем передать его в массив или может можно сразу в массив

Добавлено через 14 минут
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
.MODEL SMALL
       .STACK 256
       .DATA 
      MAS_A     DW  5, 10, 13, 15, 20
      X DW 5  
      Mas_R  DW 5 Dup(?) 
                                                                                                                                                                                 
;-------------------------------------------------------------------------------------------------------
.CODE                                                    
        START:    MOV AX, @DATA                               
                 MOV DS, AX 
         XOR SI,SI
         XOR DI,DI                                         
                 LEA SI, MAS_A 
         LEA DI, Mas_R                              
                 MOV CX, 5                    
            @M_1:XOR DX,DX
         MOV AX,[SI]
                 DIV X
         MOV  [Mas_R[DI]],DX                                              
                 INC SI 
         INC SI
         INC DI
         INC DI                                                                                                                
                 jns @M_1
                 MOV AH, 09
                 INT 21h
         MOV AX, 4C00h
         INT 21h
END  START
Получилось так,но нужно разобраться с DI и вывести после полученный массив на экран, потому что у меня DI дважды переписывает в ходе выполния программы

Добавлено через 41 минуту
еще нашел такую штуку, отредактировал под себя, но почему он мне выдает 5 нулей?
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
       .MODEL SMALL
       .STACK 256
       .DATA 
      MAS_A     DW  5, 10, 13, 15, 20
      X DW 5  
      Mas_R  DW 5 Dup(?) 
Y_ASCII  DB 5 DUP(?)    ;переменная для хранения символов
SIGN         DB (?)
                                                                                                                                                                                 
;-------------------------------------------------------------------------------------------------------
.CODE 
PREOBR  PROC            ;процедура преобразования числа в ASCII
          MOV   AX, BX          ; в регистр АХ число
          MOV   SIGN, ' '           ;пробел(знак +) в переменную
          CMP   AX, 0           ;сравнить с 0
          JNS   M_1         ;если >=0 в M_1
          MOV   SIGN, '-'       ;иначе знак -
          NEG   AX          ;преобразовать в прямой код  
;------------------------------------------------------------------------------------------------------------
M_1:  XOR   CX,  CX             ;подпрограмма М_1
          MOV   BX, 10          ;делитель =10
M_2:  XOR  DX, DX           ;подпрограмма М_2
          DIV   BX          ;делим на 10
          PUSH DX           ;остаток помещаем в стэк
          INC       CX          ;СХ++
          CMP   AX, 0           ;если АХ<>0
          JNE   M_2             ;повторить деление
;------------------------------------------------------------------------------------------------------------
      XOR   SI, SI          ;очистить SI
      MOV   AL,  SIGN       ; в AL знак
      MOV   Y_ASCII[SI], AL     ;переслать знак в Y_ASCII
      INC   SI          ;SI++
M_3:  POP   AX          ;извлечь из стэка
      ADD   AL, 30h             ;вычисление ASCII кода для цифры
      MOV   Y_ASCII[SI] ,AL     ;переслать ASCII код в Y_ASCII
      INC   SI          ;SI++
    LOOP    M_3             ;если CX<>0 - повторять цикл
      MOV  Y_ASCII[SI], '$'     ;символ конца строки в Y_ASCII
RET                 ;возврат из процедуры
PREOBR  ENDP            ;завершение процедуры                                                    
        START:    MOV AX, @DATA                               
                 MOV DS, AX 
         XOR SI,SI
         XOR DI,DI                                         
                 LEA SI, MAS_A                               
                 MOV CX, 5                    
            @M_1:XOR DX,DX
         MOV AX,[SI]
                 DIV X
         MOV  [Mas_R[SI]],DX                                              
                 INC SI 
         INC SI                                                                                                                
                 jns @M_1
        MOV DI,00h
        MT2:MOV BX, Mas_R[DI]
        CALL PREOBR 
        MOV DX, OFFSET Y_ASCII
                 MOV AH, 09
                 INT 21h
        INC DI
        INC DI
        CMP DI,10
        JB MT2
         MOV AX, 4C00h
         INT 21h
END  START
Добавлено через 19 часов 4 минуты
Цитата Сообщение от Mikl___ Посмотреть сообщение
показывай свою программу, тогда и подскажем
помогите найти ошибку сдать нужно через день

Вернуться к обсуждению:
Записать результат в массив
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2015, 11:22
Готовые ответы и решения:

Прибавить к элементам массива A единицу и записать результат в массив B
Всем привет. Есть такое задание: &quot;Дан массив А типа byte. Прибавить к элементам массива A единицу...

Записать A в регистр ah, B в al. Результат ах переслать в C
a=20, b=-7 Записать а в регист ah,b в al. Результат ах переслать в с Сделал все, кроме пересылки...

Вычислить сумму с третьего по девятое число и записать результат по адресу
Добрый день, помогите пожалуйста решить задачу! Дана последовательность из 10 чисел (байтов),...

Возвести значение из ячейки [0215] в куб. Результат записать в регистр СХ
1. Возвести значение из ячейки в куб. Результат записать в регистр СХ. lubov_morkov91, по...

Вычислить сумму квадратов чисел и записать результат по адресу DS:0010h
Помогите, пожалуйста, решить задачу, во встроенном в TURBO PASCAL ассемблере, чтобы она работала...

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