Другие языки программирования и технологии

Изучение системы команд Ассемблера. Подпрограммы и прерывания. Помогите с задачами

1. Разработать программу для сложения содержимого регистров BX, CX и DX. Содержимое регистров определяется в подпрограмме по формуле * (1260-AL)/2+AL*3 Значение AL для регистров (BX=128,CX=254,DX=222)* . Содержимое регистра AL для каждого из регистров BX, CX и DX – разное.

2. И задачка.
Проверить, есть ли в буфере клавиатуры символ. Если символ отсутствует, то загрузить в AL число 06h, затем вывести символ на экран.
Программа 1.

title N184918133

ideal
model small
stack 100h

codeseg
proc Subroutine stdcall uses bx
    xor ah, ah
    mov bx, ax
    sub ax, 1260
    neg ax
    sar ax, 1
    add ax, bx
    add ax, bx
    add ax, bx
    ret
endp

    startupcode
    mov al, 128
    call Subroutine
    mov bx, ax
    mov al, 254
    call Subroutine
    mov cx, ax
    mov al, 222
    call Subroutine
    mov dx, ax
   
    add ax, bx
    add ax, cx ; Сумма BX+CX+DX в регистре AX

    exitcode
    end
Евгений Низамов
Евгений Низамов
51 590
Лучший ответ
asm
362135Sdfgsdg
362135Sdfgsdg
7 018
задачу тебе задали, где хоть плод какого то труда
XOR AX,AX
XOR BX,BX
XOR CX,CX
XOR DX,DX
MOV AX,128
CALL AAC
MOV BX,AX
MOV AX,254
CALL AAC
MOV CX,AX
MOV AX,222
CALL AAC
MOV DX,AX
ADD AX,BX прибавляем к АХ, который равен DX, последовательно
ADD AX,CX значения регистров ВХ и СХ и в регистре АХ получаем требуемый результат AX=BX+CX+DX
AAC PROC
XOR DX,DX
MOV DL,AL
SUB AL,1260
DIV 2
XCHG AL,DL
MUL 3
ADD AX,DX
RET
AAC ENDP