Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; СПО Л/р 1 (EXE)
- ; Арифметические операции: вычисление D=(A-B)*C
- ; Порядок компиляции программы:
- ; 1. Ассемблирование: TASM.EXE lab1exe.asm
- ; - в результате создается объектный модуль lab1exe.obj
- ; 2. Компоновка: TLINK.EXE lab1exe.obj
- ; - в результате создается EXE-файл, готовый к исполнению
- ; 3. Удалить файлы: lab1.obj и lab1.exe
- ;---------------------------------------
- STACKSG SEGMENT PARA STACK ; определение сегмента стека
- DW 128 DUP(?) ; под стек резервируем 128 слов
- .386
- STACKSG ENDS ; конец сегмента стека
- ;---------------------------------------
- DATASG SEGMENT PARA use16 ; определение сегмента данных
- varA DW 6h ; cлово А (знаковый)
- varB DW 2h ; слово В (знаковый)
- varC DW 2h ; слово С (знаковый)
- varD DW 4h ; слово-результат D (знаковое)
- varE DW 2h ;
- DATASG ENDS ; конец сегмента данных
- ;---------------------------------------
- CODESG SEGMENT PARA use16 ; определение сегмента кода
- ; исполнимая часть программы
- MAIN PROC FAR
- ASSUME CS:CODESG, SS:STACKSG, DS:DATASG, ES:DATASG
- ; стандартное начало EXE-программы
- MOV AX, word varB ; записать в AX значение varB 2
- ;MOV AX, 2h
- MOV BX, word varC ; записать в BX значение varC 2
- ;MOV BX, 2h;
- IMUL BX ; АХ умножается на ВХ, 4 сохраняется в BX, а в АХ 0
- SUB DX,DX;
- SUB AX,AX
- MOV AX, word varD ; присвоим значение AХ = 4
- ;MOV AX, 4h;
- IDIV BX; Поделим AХ на BХ - 4:4 = 1, 1 запишется в AX
- MOV BX, word varA; BX = 6
- MOV CX, word varC; CX = 2
- ;MOV BX, 6h; BX = 6
- ;MOV CX, 2h; CX = 2
- SUB BX, AX; BX = 6-1 = 5
- ADD BX,CX; BX = 5+2 = 7
- ; стандартное окончание программы
- MOV AX,4C00h
- INT 21h
- MAIN ENDP ; конец исполнимой части программы
- CODESG ENDS ; конец сегмента кода
- END MAIN ; указывает, что исполнимая часть программы
- ; начинается с метки MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement