Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Lea bx, N_INPBUF; адрес начала числа
Mov cl, N_FACTLEN; фактическая длина числа
Xor ch, ch; расширить до сх
Xor ax, ax
Mov dl, 10; основание системы счисления
VAL1: imul dl; умножаем на основание
mov dh, [bx]
sub dh, "0"; преобразуем его в цифру
Add al, DH; добавляем к результату
Inc bx; на следующий символ
Loop VAL1
Cmp ax, 255
Clc;сброс флага CF
Jle VAL2
stc;если результат больше 255 установить флаг CF=1
VAL2: pop dx; восстановить
Pop cx; регистры
Pop bx; из стека
Ret
VAL endp
; Подпрограмма удаления подстроки
; Параметры:
;адрес строки BP+2, позиция удаления BP+4, число удаляемых символов; BP+6, длина строки BP+8
DELSUB proc near
Push bp
Mov bp, SP
Push es
Push ax
Push si
Push di
Push cx
Mov ax, ds
Mov es, ax
mov di, [bp+4]; адрес начала строки
add di, [bp+6]; адрес позиции удаления +1
Dec di; адрес позиции удаления
Mov si, di
add si, [bp+8]; адрес остающейся части строки
mov cx, [bp+4]; адрес начала строки
add cx, [bp+10]; адрес конца строки + "$"
Sub cx, si; число перемещаемых символов - 1
Inc cx; число перемещаемых символов
Cld; продвигаться от начала к концу
Rep movsb; переслать (cx) символов
Pop bp
Pop cx; восстановить
Pop di; регистры
Pop si; из
Pop ax;стека
Pop es
Ret 8; вернуться с очищением стека
DELSUB endp
Code ends
End START
Варианты заданий
Дата публикования: 2014-11-28; Прочитано: 710 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!