Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Исследование арифметических операций


Автор: M9C1K 7.9.2010, 17:09
Уважаемые программисты, помогите с кодом,и если можно с объяснением.
Используя в качестве операндов переменные, определенные в сегменте данных,написать команды для выполнения указанных операций, вставить их в соответствующий фрагмент программы PROG4.

операция -> умножение 
1-ый операнд -> регистр 
2-ой операнд -> регистр

Вот ,что получилось,подскажите где ошибся

Код

TITLE   PROG4    АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
; -------------------------------------------------------------------------------
DATASG     SEGMENT     PARA
REZ     DW      ?
DATASG     ENDS
 
STACKSG SEGMENT  Stack
DB      12 DUP(?)
STACKSG ENDS
 
CODESG   SEGMENT        PARA    'Code'
BEGIN   PROC            FAR
ASSUME  SS:STACKSG, CS:CODESG, DS:DATASG
PUSH    DS                      ; корректное 
SUB     AX,AX           ;     завершение
PUSH    AX                      ;     программы.
MOV     AX,DATASG       ; инициализация
MOV     DS,AX           ;     сегментного регистра DS.
 
;---------------операция -> умножение, 1-ый операнд -> регистр, 2-ой операнд -> регистр---------
mov bl, X1
mul bl
MOV AX,X3
mov bx, X5
mul bx
;-----------------------------------------------------------------------------------------------------------
 
RET
BEGIN   ENDP            ;КОНЕЦ ПРОЦЕДУРЫ
CODESG  ENDS            ;КОНЕЦ СЕГМЕНТА
END             BEGIN   ;КОНЕЦ ПРОГРАММЫ
 


Автор: Mikl_ 8.9.2010, 03:39
M9C1K, а что должно получиться? В чем ошибки? программа не компилируется? пока вижу следующие ляпы
mov bl, X1
mul bl 
в AL предварительно ничего не помещаешь, поэтому при умножении AL*BL в AX окажется неизвестно что
если X1 и X2 это ячейки памяти, то можно умножать и напрямую mul X1 или mul X2
кстати Х1 и Х2 нигде не описаны ни как ячейки памяти (в сегменте данных), ни как константы (в сегменте кода) -- это тоже ошибка
а это что?
PUSH    DS                      ; корректное 
SUB     AX,AX           ;     завершение
PUSH    AX                      ;     программы.
программа еще не началась а ты ее уже завершаешь? Бред какой-то...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)