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
Варианты заданий