Читайте также:
|
|
.486
.model flat, stdcall
option casemap: none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
include /masm32/macros/macros.asm
uselib masm32, comctl32, ws2_32
.data
msg_title db "Title", 0
A DB 1h
x dd 0,1,2,3,4,5,6,7,8,9,10,11
n dd 3
buffer db 128 dup(?)
format db "%d",0
.code
start:
mov eax, 0
mov ecx, n
mov ebx, 0
L: add eax, x[ebx]
add ebx, type x
dec ecx
cmp ecx, 0
jne L
invoke wsprintf, addr buffer, addr format, eax
invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK
invoke ExitProcess, 0
end start
12. Написать программу, выполняющую беззнаковое деление (делимое – 155, делитель - 10)
.386
.model flat, stdcall
option casemap:none
include <\masm32\include\windows.inc>
include <\masm32\include\kernel32.inc>
includelib <\masm32\lib\kernel32.lib>
include <\masm32\include\user32.inc>
includelib <\masm32\lib\user32.lib>
include <\masm32\include\masm32.inc>
includelib <\masm32\lib\masm32.lib>
include <\masm32\include\debug.inc>
includelib <\masm32\lib\debug.lib>
.data
byteVar byte 155; 1 байт: +155 или -101
byteDivider byte 10; делитель размерностью 1 байт
.code
start:
PrintLine
PrintText "БЕЗЗНАКОВОЕ ДЕЛЕНИЕ"
PrintLine
PrintText "ДЕЛИМ 155 (BYTE) НА 10 (BYTE):"
mov AL, byteVar
mov AH, 0; расширяем делимое до AX
DIV byteDivider
PrintDec AL, "частное"; по выполнении в AL - "15"
PrintDec AH, "остаток"; по выполнении в AH - "5"
PrintLine
invoke ExitProcess, 0
end start
13. Написать программу, выполняющую знаковое деление (делимое – -101, делитель - 10)
.386
.model flat, stdcall
option casemap:none
include <\masm32\include\windows.inc>
include <\masm32\include\kernel32.inc>
includelib <\masm32\lib\kernel32.lib>
include <\masm32\include\user32.inc>
includelib <\masm32\lib\user32.lib>
include <\masm32\include\masm32.inc>
includelib <\masm32\lib\masm32.lib>
include <\masm32\include\debug.inc>
includelib <\masm32\lib\debug.lib>
.data
byteVar byte 155; 1 байт: +155 или -101
byteDivider byte 10; делитель размерностью 1 байт
.code
start:
PrintLine
PrintText "БЕЗЗНАКОВОЕ ДЕЛЕНИЕ"
PrintLine
PrintText "ДЕЛИМ -101 (БАЙТ) НА +10 (БАЙТ):"
mov AL, byteVar
cbw; расширяем делимое (AL) до AX
IDIV byteDivider
PrintDec AL, "частное"; по выполнении в AL - "-10"
PrintDec AH, "остаток"; по выполнении в AH - "-1"
PrintLine
invoke ExitProcess, 0
end start
14. Написать программу, выполняющую знаковое деление без остатка (делимое – -100, делитель - 10)
.386
.model flat, stdcall
option casemap:none
include <\masm32\include\windows.inc>
include <\masm32\include\kernel32.inc>
includelib <\masm32\lib\kernel32.lib>
include <\masm32\include\user32.inc>
includelib <\masm32\lib\user32.lib>
include <\masm32\include\masm32.inc>
includelib <\masm32\lib\masm32.lib>
include <\masm32\include\debug.inc>
includelib <\masm32\lib\debug.lib>
.data
byteVar byte 155; 1 байт: +155 или -101
byteDivider byte 10; делитель размерностью 1 байт
.code
start:
PrintLine
PrintText "БЕЗЗНАКОВОЕ ДЕЛЕНИЕ"
PrintLine
PrintText "ДЕЛИМ -100 (БАЙТ) НА +10 (БАЙТ):"
mov AL, byteVar
cbw; расширяем делимое (AL) до AX
IDIV byteDivider
PrintDec AL, "частное"; по выполнении в AL - "-10"
PrintLine
invoke ExitProcess, 0
end start
15. Написать программу, выводящую в консоли сообщение “Hello, World”, используя макросы
.386
.model flat, stdcall
option casemap:none
include <\masm32\include\windows.inc>
include <\masm32\include\kernel32.inc>
includelib <\masm32\lib\kernel32.lib>
HelloWord MACRO var1, var2, var3; макроопределение
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hConsoleOutput, eax
invoke WriteConsoleA, hConsoleOutput, var1, var2 msg1, ADDR NumberOfChars, 0
ENDM; конец макроопределения
.data
hConsoleInput DWORD?
hConsoleOutput DWORD?
NumberOfChars DWORD?
msg1 byte " Hello, World!", 0
.code
start:
HelloWord addr msg1, sizeof, invoke AllocConsole; макровызов
.while 1; бесконечный цикл
.endw
invoke ExitProcess, 0; сообщаем системе, что программа завершена
end start
Дата добавления: 2015-08-02; просмотров: 116 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Написать программу, которая складывает два числа, и проверяет результат. В результате выполнения программы должно открыться окно с сообщением, что сумма равна 0. | | | Написать программу, в результате которой будет выводиться окно Windows с разностью значений двух переменных (3,1) |