Нахождение первого отрицательного элемента массива - Assembler

Узнай цену своей работы

Формулировка задачи:

Не могу понять в чём проблема программа должна найти первый отрицательный элемент массива и записать его в файл а оно записывает 0.Срочно помогите пожалуйста буду очень благодарен.
.model small
.stack 100h
.data
Len equ 10 ; Кол-во элементов массива
Mas db 4,76,-30,54,-5,6,2,44,33,22
min db ?
minus dw ?
HANDLE1 DW ?
OUTREC DB 1 dup (?)
Filename db 'rezultat_7.txt',0
.code
start:
mov ax,@data
mov ds,ax
mov cx,Len ;Кол-во элементов массива ==числу повторений цикла
mov bl,Mas[0]
 
xor si, si
jcxz exit
mov si,0
cycl:
 
cmp Mas[si],bl
jg metka
cmp al, '-'
mov bl,Mas[si]
mov min,bl
metka:
mov minus,si

exit:
xor bx,bx
xor ax,ax
mov bx,10
mov ax, minus
div bl
 
add ah,30h
mov OUTREC, ah
 
xor ax,ax
xor bx,bx
xor cx,cx
xor dx,dx
 
MOV AH,3CH ; Запрос на создание
MOV CX,00 ; обычного файла.
LEA DX, Filename ; ASCIIZ строка.
INT 21H ; Вызов DOS-прерывания.
MOV HANDLE1,AX ; Сохранение файлового номера.
 
MOV BX,HANDLE1 ; Файловый номер.
MOV AH,40H ; Запрос записи.
MOV CX,1 ; Длина записи.
lea dx, OUTREC ; Адрес области вывода.
INT 21H ; Вызов DOS-прерывания.
 
MOV AH,3EH ; Запрос на закрытие файла.
MOV BX,HANDLE1 ; Файловый номер.
INT 21H
mov ax,4c00h
int 21h
end start

Решение задачи: «Нахождение первого отрицательного элемента массива»

textual
Листинг программы
    
        .model  small
    .386
    ;*************************************************************
    
    .data
                db 'Begin of DATAseg'
    Len         equ 10                      
    Mas         db  4,76,-30,54,-5,6,2,44,33,22
    min         db  ?
    HANDLE1     dw  ?
    outrec      db  3 dup (?)
    Filename    db  'D:\rezultat_7.txt',0
                db  'End of DATAseg'
        
    .stack
        db 255
    
    .code
 
    start:
        mov ax,@data
        mov ds,ax
 
        xor si,si
        mov cx,Len
        mov bl,Mas[si]
         
        cyc:
            sub bl,0
            js good
            inc si
            mov bl,Mas[si]
        loop cyc
        
        jmp exit
        
        good:
        mov min,bl
        xor ah,ah
        mov al,0ffh
        sub al,min
        inc al
        
        xor si,si
        mov outrec[si],'-'
        
        mov bl,10
        div bl
        
        or ax,3030h
        
        cmp al,30h
        jz skip
        inc si
        mov outrec[si],al
        skip:
        inc si
        mov outrec[si],ah
         
        MOV AH,3CH 
        MOV CX,00 
        LEA DX, Filename 
        INT 21H 
        MOV HANDLE1,AX 
         
        MOV BX,HANDLE1 
        MOV AH,40H 
        MOV CX,3
        lea dx, outrec
        INT 21H 
         
        MOV AH,3EH 
        MOV BX,HANDLE1 
        INT 21H
        
        exit:
        
        mov ah,4Ch
        int 21h
    end start

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы