Return to Snippet

Revision: 4599
at January 13, 2008 12:22 by darkphotn


Initial Code
.model small
.stack
.data
Message db "Press Y or N:$" ;Prompt for user
Uyes db "You pressed Y!$" ;Pressed y
Uno db "You pressed N!$" ;Pressed n

;how to do assembly:
;download masm32
;download link563.exe (extracts link.exe)
;replace c:\masm32\bin\link.exe with THAT link.exe
; use ml /c /coff blah.asm
;  then    link blah.obj
; when it asks you for blah.exe  just keep hitting enter.


.code
_start:
mov ax,03h ;clears screen (function 3h)
int 10h ;interrupt 10h

mov ax, SEG Message ;put segment of message into AX
mov ds, ax ;put this into DS
mov dx, OFFSET Message ;put offset of message into AX
mov ah,09h ;Function 9h of
int 21h ;Interrupt 21h

mov ah,01h ;function 01h of int21h,
int 21h ;get char from keyboard

cmp al, "Y" ;if ah Y then
je Yes ;Goto Yes label

cmp al, "N" ;if ah N then
je No ;Goto No Label
jne _start ;if not Y or N then goto start

Yes:
mov ax,03h ;clears screen (function 3h)
int 10h ;interrupt 10h

mov ax, SEG Uyes ;segment of Uyes
mov ds, ax ;put segment into DS
mov dx, OFFSET Uyes ;put offset of Uyes into DX
mov ah,09h ;function 9h print string at DS:DX
int 21h ;call interrupt 21h
jmp close

No:
mov ax,03h ;clears screen (function 3h)
int 10h ;interrupt 10h

mov ax, SEG Uno ;segment of Uno
mov ds, ax ;put segment into DS
mov dx, OFFSET Uno ;put offset of Uno into DX
mov ah,09h ;function 9h print string at DS:DX
int 21h ;call interrupt 21h
jmp close

close:
mov ax,4c00h ;put 4c00h into ax, closing back to DOS
int 21h ;INT 21h, return to DOS

end _start

Initial URL


Initial Description
This demonstrates a simple "Hello World" style program for 16-bit (DOS) x86 assembly using Microsoft's free MASM assembler.

Initial Title
Simple MASM program

Initial Tags
simple

Initial Language
Assembler