Другие языки программирования и технологии
Вопрос ассемблер
Прогеры, напишите прогу чтоб она выводила на экран слово 'Hello' со всеми комментариями, а то препод спрашивает каждую строчку!!!!А я незнаю ваще ассемблер
То под вин, это под дос
.model small
.stack 100h
.data
mesg db "Hello World! $"
.code
main:
mov ax, @data ; настраивается сегментный регистр
mov ds, ax
mov ah, 09
mov dx, offset mesg ; вывод сообщения
int 21h
mov ah, 01 ; ждет нажатия кнопок
int 21h
mov ax,4c00h ; выход
int 21h
end main
.model small
.stack 100h
.data
mesg db "Hello World! $"
.code
main:
mov ax, @data ; настраивается сегментный регистр
mov ds, ax
mov ah, 09
mov dx, offset mesg ; вывод сообщения
int 21h
mov ah, 01 ; ждет нажатия кнопок
int 21h
mov ax,4c00h ; выход
int 21h
end main
.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
;/////////////////////////////////////////////////////////////////////////////
.const
;/////////////////////////////////////////////////////////////////////////////
.data
lpCaption db "Caption",0
;/////////////////////////////////////////////////////////////////////////////
.data?
;/////////////////////////////////////////////////////////////////////////////
.code
_start:
;/////////////////////////////////////////////////////////////////////////////
CALL GetCommandLineA ;Kernel32.dll
CALL _wincmdln ;WinMain.asm
PUSH NULL ;lpModuleName
CALL GetModuleHandleA ;Kernel32.dll
PUSH ESI ;lpCmdLine
PUSH EAX ;hInstance
CALL WinMain ;WinMain.asm
PUSH NULL ;uExitCode
CALL ExitProcess ;Kernel32.dll
;/////////////////////////////////////////////////////////////////////////////
_wincmdln Proc
MOV ESI,EAX
MOV AL,BYTE PTR DS:[ESI]
CMP AL,34 ;ASCII (") 22h
JNZ _exit ;переход, если флаг Z неактивен
INC ESI ;удаляем символ ASCII (") 22h
_loop:
MOV AL,BYTE PTR DS:[ESI]
INC ESI ;удаляем первый символ
CMP AL,34 ;ASCII (") 22h
JE _finish ;переход, когда активен флаг Z
JMP _loop ;безусловный переход
_finish:
INC ESI ;удаляем символ ASCII (") 22h
MOV AL,BYTE PTR DS:[ESI]
CMP AL,32 ;ASCII ( ) 20h
JE _space ;переход, когда активен флаг Z
JMP _exit ;безусловный переход
_space:
INC ESI ;удаляем пробел
_exit:
RET
_wincmdln Endp
;/////////////////////////////////////////////////////////////////////////////
WinMain Proc hInstance :HINSTANCE,lpCmdLine :LPSTR
PUSH MB_OK ;uType
PUSH offset lpCaption ;lpCaption
PUSH lpCmdLine;lpText
PUSH NULL ;hWnd
CALL MessageBox ;User32.dll
RET
WinMain Endp
;/////////////////////////////////////////////////////////////////////////////
end _start
.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
;/////////////////////////////////////////////////////////////////////////////
.const
;/////////////////////////////////////////////////////////////////////////////
.data
lpCaption db "Caption",0
;/////////////////////////////////////////////////////////////////////////////
.data?
;/////////////////////////////////////////////////////////////////////////////
.code
_start:
;/////////////////////////////////////////////////////////////////////////////
CALL GetCommandLineA ;Kernel32.dll
CALL _wincmdln ;WinMain.asm
PUSH NULL ;lpModuleName
CALL GetModuleHandleA ;Kernel32.dll
PUSH ESI ;lpCmdLine
PUSH EAX ;hInstance
CALL WinMain ;WinMain.asm
PUSH NULL ;uExitCode
CALL ExitProcess ;Kernel32.dll
;/////////////////////////////////////////////////////////////////////////////
_wincmdln Proc
MOV ESI,EAX
MOV AL,BYTE PTR DS:[ESI]
CMP AL,34 ;ASCII (") 22h
JNZ _exit ;переход, если флаг Z неактивен
INC ESI ;удаляем символ ASCII (") 22h
_loop:
MOV AL,BYTE PTR DS:[ESI]
INC ESI ;удаляем первый символ
CMP AL,34 ;ASCII (") 22h
JE _finish ;переход, когда активен флаг Z
JMP _loop ;безусловный переход
_finish:
INC ESI ;удаляем символ ASCII (") 22h
MOV AL,BYTE PTR DS:[ESI]
CMP AL,32 ;ASCII ( ) 20h
JE _space ;переход, когда активен флаг Z
JMP _exit ;безусловный переход
_space:
INC ESI ;удаляем пробел
_exit:
RET
_wincmdln Endp
;/////////////////////////////////////////////////////////////////////////////
WinMain Proc hInstance :HINSTANCE,lpCmdLine :LPSTR
PUSH MB_OK ;uType
PUSH offset lpCaption ;lpCaption
PUSH lpCmdLine;lpText
PUSH NULL ;hWnd
CALL MessageBox ;User32.dll
RET
WinMain Endp
;/////////////////////////////////////////////////////////////////////////////
end _start
Похожие вопросы
- /////////////////////////маленький вопрос АССЕМБЛЕР\\\\\\\\\\\\\\\\\\\\
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Вопрос по ассемблеру
- С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...
- Ассемблер сегодня и завтра.
- Простой вопрос по прыжкам ассемблера
- стоит ли изучать ассемблер, если программирую на Делфи? и вообще реально ли что нибудь хорошее, дельное, нужное написать
- Неужели ассемблер действительно проще чем C ?