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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 19:59   #1
Иван1223
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 1
По умолчанию Необходимо подкорректировать программу на ассемблере!!!

Я новичок,и АССЕМБЛЕР изучал самостоятельно.Программа рассчитывает выражение и должна совершить вывод данных регистра АХ на экран в десятичной форме...
Скорее всего проблема с выводом т.к. этот фрагмент писал не я.
Заранее СПАСИБО!



.model small
masm
.stack 100h
.data

String db 5 dup (?),'$' ; Резервируем 5 байт для строки
StringEnd = $-1 ; Указывает на символ '$'
x db 1
a db 2
b db 3
c db 4
Fx dw 0
.data?
A1 dw ?
B1 dw ?
C1 dw ?
D1 dw ?
x2 db ?
x3 dw ?

.code
start:
mov ax,@data
mov ds,ax

M1:
xor bx,bx
xor ax,ax
mov al,[x]
mul al
mov [x2],al
mul [x]
mov [x3],ax

xor ax,ax
mov al,a
cbw
mul [x3]
mov [A1],ax

xor ax,ax
mov al,b
mul [x2]
mov [B1],ax

xor ax,ax
mov al,a
mul [x2]
mov [C1],ax

xor ax,ax
mov al,a
mul [x]
mov [D1],ax

mov ax,[A1]
sub ax,[B1]
add ax,4 ;AX=a-b+4

mov bx,[C1]
add bx,[D1]
sub bx,3 ;BX=c+d-3
div bx ;AX/BX=ax x dx

add [Fx],ax
inc [x]
cmp [x],10
jle M1

std ; Устанавливаем ОБРАТНЫЙ порядок записи
lea di,StringEnd-1 ; ES:DI = последний символ строки String
mov ax,[Fx]
mov cx,10 ; Задаемся делителем CX = 10
Repeat:
xor dx,dx ; Обнуляем DX (для деления)
div cx ; Делим DX:AX на CX (10),
; Получаем в AX частное, в DX остаток
xchg ax,dx ; Меняем их местами (нас интересует остаток)
add al,'0' ; Получаем в AL символ десятичной цифры
stosb ; И записываем ее в строку
xchg ax,dx ; Восстанавливаем AX (частное)
or ax,ax ; Сравниваем AX с 0
jne Repeat ; Если не ноль, то повторяем

; Теперь осталось вывести строку на экран
mov ah,9
lea dx,[di+1] ; Заносим в DX адрес начала строки
int 21h ; Выводим ее на экран




mov ax,4C00h
int 21h

end start
Иван1223 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу на ассемблере tatach Помощь студентам 0 17.12.2010 20:03
Подкорректировать программу wrmarw Паскаль, Turbo Pascal, PascalABC.NET 5 04.05.2010 14:06
Можно ли подкорректировать программу, имея только ехе-шник? dmitriy777 Помощь студентам 5 22.02.2010 11:52
Необходимо написать программу за $$$ kkkron Фриланс 3 15.03.2009 13:22
необходимо сделать программу Firefight Фриланс 8 12.09.2008 11:45