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

Вопрос ассемблер

Прогеры, напишите прогу чтоб она выводила на экран слово 'Hello' со всеми комментариями, а то препод спрашивает каждую строчку!!!!А я незнаю ваще ассемблер
Ivan Borisov
Ivan Borisov
1 071
То под вин, это под дос
.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
Владимир Саари
Владимир Саари
757
Лучший ответ
.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
Vova Andreev
Vova Andreev
1 234