/ Published in: Assembler
This demonstrates a simple "Hello World" style program for 16-bit (DOS) x86 assembly using Microsoft's free MASM assembler.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
.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