Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с лабораторной по Ассемблеру.

63K
08 декабря 2010 года
KlepaCat
8 / / 08.12.2010
Есть пример: (A+D)/(B+C)
Операнды являются беззнаковыми
Нужно вычислить данное выражение, но с условием:
Если Результат суммы знаменателя больше байта, то сравнить тетрады младшего байта результата.
Заранее спасибо))):)
392
08 декабря 2010 года
cronya
421 / / 03.01.2009
Для какого процессора?
63K
08 декабря 2010 года
KlepaCat
8 / / 08.12.2010
МП 8086
63K
16 декабря 2010 года
KlepaCat
8 / / 08.12.2010
DATA SEGMENT para
a db 255
b db 150
c db 110
d db 255
y dw ?
DATA ENDS
CODE SEGMENT para
begin PROC far
ASSUME cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov ax,0

;складываем a+d
mov bl,d

mov al,a
mov bh,0
mov ah,0;расширяем
add ax,bx
mov dx,ax
;записали слово суммы в dx

;складываем b+c
mov bl,b
mov al,c
mov ah,0;расширяем
mov bh,0
add ax,bx
mov bx,ax
; записали слово суммы в bx

xor ax, ax;обнуляем ax
mov ah, bh; записываем старший бит слова
cmp ah,0; сравниваем с нулем
jne e; переход в случае не равенства на метку e

;если равно продолжаем
; следовательно b+c - помещается в байте
mov ax,bx
mov bl,al; запишем в bl только младший байт
mov ax,dx;запишем a+d в ax
div bl; делиv слово
jmp ex; переходим в конец кода

e:

;т.к. b+c больше байта, то увеличиваем сумму a+d
; до двойного слова
mov ax,dx;перенесли
mov dx,0
div bx; делим
mov bx,ax; перенесли

; если старший байт результата не равен нулю
; то сравниваем тетрады младшего байта
xor ax,ax
mov al, bl ; записываем младший байт
shr al,4 ; делаем правый сдвиг, выделяем старшую тетраду
mov cl, al

mov al,bl;снова записываем младший байт
shl al,4
shr al,4; выделили младшую тетраду

cmp al,cl ;сравниваем тетрады
jb bb; если al(младшая тетрада) меньше, чем
;cl(старшая тетрада) то перемещаемся по метке

;если младшая тетрада al больше, чем старшая тетрада cl
; то записываем
mov al, cl
jmp ex;

bb: mov cl,al ;записываем большее значение в меньшее


ex:
mov y,ax
begin ENDP
CODE ENDS
END begin
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог