Вычислить значение выражения и записать в файл - Assembler
Формулировка задачи:
Помогите.
Вычислить значение выражения:
c ) A * B + C * D
d ) A / B + C / D
Операции умножения и деления операндов выполнить с помощью подпрограммы. Переменные, входящие в уравнения вводятся с клавиатуры А=20, B=13, C=26, D=15 в формате hex. Программу оформить с запросами на ввод данных. Выполнить программу для не менее четырех значений A, B , C , D . Результаты ( в hex формате ) вместе с интерфейсом ввода записать в файл.
Решение задачи: «Вычислить значение выражения и записать в файл»
textual
Листинг программы
org 100h jmp start mess db 'Input A: 20',13,10 ;<--------------------+ db 'Input B: 13',13,10 ;| db 'Input C: 26',13,10 ;| db 'Input D: 15',13,10 ;| db '----------------------',13,10 ;| db 'A*B + C*D = 650 $' ; данные на экране ---+ fSize = 80*6 ; размер файла 6 строк fName db 'screen.txt',0 ; имя файла buff db fSize dup(' ') ; буфер для выходного файла start: mov ax,3 ; видео/режим 80х25 int 10h mov ah,9 mov dx,mess int 21h ; Сбрасываем видео/буфер в локальный буфер ------------------ push ds ; push 0B800h ; pop ds ; xor si,si ; DS:SI - источник mov di,buff ; ES:DI - приёмник mov bx,6 ; кол-во повторов цикла (строк) save: ; mov cx,80 ; сохранять будем по 1 строке @@: ; lodsw ; чтение с в/буфера (с атрибутом) stosb ; запись в л/буфер (без атрибута) loop @b ; mov ax,0A0Dh ; после каждой строки, stosw ; ..вставляем CRLF dec bx ; уменьшаем счётчик строк jnz save ; мотаем цикл 6 раз.. ; Сохранение содержимого экрана в файл ----------------------- pop ds ; mov ah,3Ch ; создать файл! mov dx,fName ; mov cx,20h ; режим R/W int 21h ; mov bx,ax ; дескриптор в ВХ mov ah,40h ; запись! mov dx,buff ; mov cx,fSize ; кол-во байт int 21h ; mov ah,3Eh ; закрыть! int 21h ; exit: xor ax, ax int 16h int 20h
Объяснение кода листинга программы
- Переменная
fSize
инициализируется значением 80*6, что означает размер файла в 6 строк по 80 символов в строке. - Переменная
fName
содержит имя файлаscreen.txt
. - Переменная
buff
инициализируется как буфер размером 80*6, заполненный пробелами. - Код переходит к метке
start
, которая является точкой входа в программу. - Код выводит на экран приглашение для ввода данных, используя переменную
mess
. - Код сбрасывает видео/буфер в локальный буфер, используя метку
save
. - Код сохраняет содержимое экрана в файл, используя переменную
fName
. - Код закрывает файл и завершает программу, используя метку
exit
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д