Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2020, 13:24   #1
denvage
Новичок
Джуниор
 
Регистрация: 24.11.2020
Сообщений: 1
По умолчанию assemler

Добрый день, https://www.programmersforum.ru/showthread.php?t=230222 отсюда программу взял, но она выводит символы ASCII, и не заполняет файл на 64 кб https://www.programmersforum.ru/showthread.php?t=230222

как сделать так чтобы она выводила любой символ, и заполнила файл на 64 кб?
вообще задание такое: динамически выделять блок памяти объемом 64 Кбайт. Выделенный блок заполнять символьной информацией и переписывать в файл.


Код:
.model small                    ; модель памяти ближнего типа
.stack 100h                         ; определить стек размером 100h
.data
    fname db 'report.txt',0
    hi DB 'RGR',10,'SYSTEM SOFTWARE',10,'STUDENT ',10,'familiya i.o.',10,'VARIANT 19',10,10,'$''
    next DB 'PRESS ANY KEY TO CONTINUE','$'   
    
   
.code                               ; открыть сегмент кода
main:
        mov es,es:2ch                           ; выгружаем из памяти окружение дос
        mov ah,49h
        int 21h


         mov ax, @data               ; настраивается сегментный регистр
     mov ds, ax
    
    LEA DX,hi       ;загружаем адрес строки с приветствием
    MOV AH,09       ;вывод на экран
    INT 21h
mov ah,09h              ; вывод текстовой информации
   


for_start : 
    mov ah,3ch
     mov cx,0
     mov dx,offset fname
    int 21h 
     push ax

    mov ah,48h              ; выделяем блок памяти
      mov bx,100h
        int 21h
      jnc @ok
      mov ah,48h                              ; если запрошенное количество памяти
      int 21h                 ; не может быть выделено, то в bx вернётся значение
      @ok:                    ; доступной памяти в параграфах
      shl bx,4                ; умножаем на 16, получаем кол-во выделенных байт
      mov es,ax
      mov ds,ax
    mov di,0                       ; Счетчик = 0 
      
for_loop:                          ; метка для перехода назад 
      
      mov ax,di
    stosb               ; увеличиваем DI на 1 
      cmp di,bx
    jnz for_loop                ; если не равно, переход на for_loop 

      dec di
      mov cx,di
      pop bx
      mov ah,40h
    xor dx,dx
    int 21h

for_finish:                             ; если равно, выходим
    mov ah,3Eh 
    int 21h
      mov ax,4c00h
      int 21h
    end main
denvage вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно программу из pascal и delphi в assemler Wotyou Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 06.09.2016 09:52
Assemler. Написать программу, удаляющую все цифры "1" из исходной строки. lady.Meri Помощь студентам 1 24.04.2013 17:53
написать програму(в assemler полный 0) Sokol001 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.10.2012 09:04
Assemler, не могу установить звуковой сигнал. FieldyTR Помощь студентам 0 29.03.2012 16:07