Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 7
1

Обнуления массива слов

13.05.2016, 13:39. Показов 1290. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание такое:
Написать программу обнуления массива слов длинною 100 элементов, используя все возможные режимы адресации.
Написал код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
data segment
massiv dw 1,-2,3,4,5,6,7,8,9
data ends
code segment
assume es:data, cs:code
start:
push ds
pop es
lea di,massiv
xor ax,ax
mov ax,3
int 10h
code ends
end start
Подскажите, пожалуйста, правильно ли я написал код? И почему когда я в dos-box'е tlink этого кода то выбивает Warning: No stack?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2016, 13:39
Ответы с готовыми решениями:

Составить процедуру обнуления всех положительных элементов массива
Составить процедуру обнуления всех положительных элементов в одномерном массиве A. С помощью этой...

Удалить все повторяющиеся элементы путём обнуления их значений и смещения в конец массива.
Создать массив размерностью N (описать константу и задать размер по умолчанию равный...

Написать процедуру для обнуления элементов тех строк массива, которые содержат значение, равное общему максимальному.
Задан двумерный целочисленный массив F размером 9 на 9 элементов. Написать процедуру для обнуления...

Изменить процедуру обработки массива двойных слов на обработку слов
У меня не получается переделать массив размерностью 4 байта на 2 байта, и проблема с командой...

4
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
13.05.2016, 14:25 2
Цитата Сообщение от Алексей1706 Посмотреть сообщение
tlink этого кода то выбивает Warning: No stack?
Потому что лучше использовать упрощенный стиль оформления проги, тогда и про стек упоминание можно вставить:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.model small
.386
.stack
.data
massiv dw 1,-2,3,4,5,6,7,8,9
arr_sz  = ($-massiv)/2
.code
start:
    mov ax, @data
    mov ds, ax
    mov es, ax
    lea di, massiv
    mov cx, arr_sz
    xor ax,ax
    rep stosw
    mov ax,4c00h
    int 21h
end start
. К тому же такой стиль понимают masm/tasm/wasm/jwasm.
0
2 / 2 / 1
Регистрация: 20.10.2015
Сообщений: 244
13.05.2016, 14:31 3
Нашел такой код, подскажите подходит он для моего задания?
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
two segment
s_s dw 1,2,3,9,9,9,3,4,2,2
len=$-s_s
two ends
 
fir segment
assume cs:fir
begin_:
    mov ax,two
    mov ds,ax
    mov es, ax
    lea di,s_s
    mov si, di
    mov cx, len
    push cx
    xor ax, ax
    rep stosb    ;обнуление
    pop cx
lop:
    mov al, [si]
    call OutInt
    mov al, ' '
    int 29h
    inc si
    loop lop
 
     xor ax, ax
     int 16h
    mov ax,4c00h
    int 21h
    
OutInt proc
    push ax
    push dx
    push bx
    push cx
    push di
    
    test ax, ax
    jns oi1
    mov di, 1
    neg ax
oi1:
    xor cx, cx
    mov bx, 10
oi2:
    xor dx, dx
    div bx
    add dx, '0'
    push dx
    inc cx
    test ax, ax
    jne oi2
    
    mov ah, 2
    cmp di, 1
    jne oi3
    mov dl, '-'
    int 21h
oi3:
    pop dx
    int 21h
    loop oi3
    
    pop di
    pop cx
    pop bx
    pop dx
    pop ax
    ret
OutInt endp
fir ends
end begin_
Добавлено через 1 минуту
Charles Kludge,
Assembler
1
2
3
4
.model small
.386
.stack
.data
А что означают эти строки? Просто в ассемблере недавно и впервые такую запись вижу

Добавлено через 2 минуты
Charles Kludge, И это не понимаю что:
Assembler
1
arr_sz  = ($-massiv)/2
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
13.05.2016, 15:57 4
Assembler
1
2
3
4
5
6
7
8
.model small    ; модель памяти - маленькая: один сегмент кода и один сегмент данных
        ; ну и сегмент стека
.386        ; набор команд под 386 процессор
.stack      ; объявляем сегмнт стека размером в 256 байт
.data       ; объявляем сегмент данных
massiv dw 1,-2,3,4,5,6,7,8,9
arr_sz  = ($-massiv)/2  ; размер массива в словах(DW): (текущий адрес минус адрес
    ; начала массива) делённый на 2(размер слова в байтах)
0
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
13.05.2016, 19:36 5
Цитата Сообщение от Max00766 Посмотреть сообщение
mov al, [si]
call OutInt
внутри процедуры проверяется весь регистр ax на знак. так что перед вызовом надо расширить регистр al
Assembler
1
2
3
mov al, [si]
cbw
call OutInt
0
13.05.2016, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2016, 19:36
Помогаю со студенческими работами здесь

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

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». ...

Формирование массива слов и удаление из текста слов, которые встречаются заданное число раз
Доброго времени суток. Помогите, пожалуйста! Задача заключается в том, что нужно из введенного...

Обработка слов строки без массива слов
В программе нужно обработать введенную строку , ввести некоторую разменость и вывести слова ,...

Разбить массив слов на 2 массива слов
Доброго времени суток. Есть файл txt формата, в котором слова представляются в виде {иностранное...

Указатели и их обнуления
Вот допустим есть такая штука. //... class Parasya () { private: int dom; public: ...


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

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