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

при запуске ничего не выводится.почему. TASM

05.06.2013, 19:36. Показов 499. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в задании должно выполняться следующие: Пpоцедуpа подсчитывает пpоизведение отpицательных элементов только стpок с нечетными номеpами.
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
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
st_segment  SEGMENT PARA STACK 'STACK'             ;стандартное объявление сегмента стека
       DB      128 DUP (?)                                ;выделим под стек 64 байтa (не заботясь о том, что в них)
st_segment  ENDS                                   ;завершим стандартное объявление сегмента стека
 
dt_seg  SEGMENT PARA PUBLIC 'DATA'
 
priv db 'Work Open$'       
MESSAGE1  DB  'Prouzvedenie$'
MESSAGE2  DB  'Perepolnenie $'
newline       db   0dh, 0ah
endline db 13,10,'$'
    N DW 4        ;количество строк
    M Dw 5          ;количество столбцов
 
    ARRAY     DW  0,2,-2,3,-5,-2,9,5,3,-8,1,2,-2,1,-5,-2,7,10,3,-2 
    Cur DW 0
    Res DW 0
 
dt_seg  ENDS          ;завершим стандартное объявление сегмента данных
 
cod_seg SEGMENT PARA PUBLIC 'CODE'
    ASSUME CS:cod_seg,ES:cod_seg, DS:dt_seg,SS:st_segment
 
         ;пpогpамма, вызывающая пpоцедуpу произведения
begin: 
        push ds                               ;подготовка стека для pаботы с отладчиком
        sub  ax,ax                            ;обнуление ax
        push ax                               ;подготовка стека для отладчика
       JMP set_up;- пеpеход на вызов пpоцедуpы
      
root_proc PROC FAR
  
        push ax  ;сохpанение
        push DS  ;значимых
        push dx  ;pегистpов
 
  ;Вывод приветсвия
        mov ax,dt_seg
        mov ds,ax 
        mov ah,9   
        mov dx,offset priv
        int 21h 
    
;Вывод перевода строки
        mov ax,dt_seg
        mov ds,ax  
        mov ah,9  
        mov dx,offset newline
        int 21h 
 
        mov di,dx
       mov ax, N
       mov cx, ax 
    
         mov Cur, ax 
        mov ax, 1 
        mov res,ax 
 
loop_N:
        test cx,00000001B    ;проверка на четность  строки
        jnz j_else    ; перейти если не равно
    push cx
    
     mov cx,M;- подговка цикла вычисления
 
loop_M: 
    mov bx, cur 
    mov ax, [bx]    
    cmp  ax,0  ;сравниваем элемент массива с нулём
    JGE jnc_if ; JGE/JNL - переход, если больше или равно/переход, если не меньше. 
    imul res  ;если отрицательное то делаем произведение
    mov res, ax ;результат расчета
 
jnc_if:
    add Cur, 2
        loop loop_M
 
    jmp j_endif
j_else:   
    mov ax, M
    add Cur, ax
    add Cur, ax
j_endif:
    pop cx
        loop loop_N
 
    ;Вывод слова произведение
        mov ax,dt_seg
        mov ds,ax 
        mov ah,9   
        mov dx,offset MESSAGE1
        int 21h 
    ;Вывод прозведения
    ;mov ax,cx      
         jmp calc   ; к завеpшению
 
 
ovr:    mov ax,dt_seg; вывод сообщения
          mov ds,ax  ; о пеpеполнении
          mov ah,9
          mov dx,offset MESSAGE2
          int 21h
 
calc:   pop dx
           pop DS      ;восстановление pегистpов
           pop ax
 retf
root_proc endp                                  ;конец процедуры вычисления произведения
      
set_up: 
 
mov   ax,dt_seg                         ;теперь мы хотим работать с сегментом данных
        mov   ds,ax                           ;и загружаем в регистр ds адрес начала сегмента данных
        mov   bx,n                            ;кладём в bx количество строк
        mov   cx,m                            ;кладём в cx количество столбцов
 
        mov   ax,seg array                    ;занесение адpеса исходного
        mov   ds,ax                           ;массива в стаpтовые
        mov   dx,offset array                 ;pегистpы ds и dx
call root_proc
 
;-завеpшение пpогpаммы
 RETF
cod_seg    ENDS
        END BEGIN
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2013, 19:36
Ответы с готовыми решениями:

TASM. Каждое слово строки, отделенное пробелом выводится в новой строке, с заданным отступом
Доброго времени суток. Помогите разобрать следующий код. Вводится строка, каждое слово строки,...

Вылет Dosbox при запуске Tasm
Всем привет, возникла следующая проблема: при запуске программы на ассемблере через Dosbox пишу...

Ошибка, не выводится измененный массив Паскаль-Ассемблер TASM
В строках матрицы, содержащих нуль, элементы сортируются по убыванию. Исходная задача решена...

Sega Genesis - Ничего не выводится на экране эмулятора
Работаю по материалу: https://huguesjohnson.com/programming/genesis/tiles-sprites/ Вот код: ;...

0
05.06.2013, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2013, 19:36
Помогаю со студенческими работами здесь

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

Почему при повторном вычислении длины строки выводится неверное значение
Написал тестовый код для вывода длины строки: format PE GUI include 'win32ax.inc' .code ...

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

При написании программы по нахождению минимума на экран ничего не выводится, почему?
Вот код: METOD1.CPP #include "method.h" double Fun(double x) { return x*x*x-6*x*x+9*x+4; }...


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

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

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