CS344-321 Assembly Language Programming Period 11
Directive - EQU - GROUP - .DATA - .STACK
end start ตัวอย่าง 3.4 .com page ,80 title Hello World Program ; This program displays "Hello, world!" dosseg .model tiny .code org 100h start: mov ah,9 mov dx,offset hello_message int 21h mov ax,4c00h hello_message db 'Hello, world!', 0dh, 0ah, '$’ end start
ตัวอย่าง 3.5 .exe (small model) dosseg .model small .stack 100h .data hello_message db 'Hello, world!', 0dh, 0ah, '$' .code main: mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4c00h end main
ตัวอย่าง แสดงให้เห็นว่า ข้อมูลกับคำสั่ง เรียงอย่างไรก็ได้ ขึ้นอยู่กับความต้องการของผู้เขียน dosseg .model tiny .code org 100h start: jmp l hello_message db 'Hello, world!', 0dh, 0ah, '$’ l: mov ah,9 mov dx,offset hello_message int 21h mov ax,4c00h end start หมายเหตุ โปรแกรมไวรัสสำหรับ .com ทำได้โดยการเขียนส่วนที่เป็นไวรัสไว้หน้าโปรแกรม แล้วกระโดดไปทำงานของโปรแกรมเดิม สำหรับ .exe ต้องแก้จุดเริ่มต้นของโปรแกรมใน header ของแฟ้ม .exe ให้กระโดดไปทำงานที่ไวรัสก่อน ส่วนโปรแกรม ไวรัสจะถูกเพิ่มเข้าไปท้านแฟ้ม
ตัวอย่าง แสดงให้เห็นว่า โปรแกรม ตามแนวคิดของ John Von Newman ประกอบด้วยข้อมูลกับคำสั่ง ถ้าเรารู้รหัสคำสั่ง เราสามารถเขียนคำสั่งภาษาเครื่องโดยตรงได้ dosseg .model tiny .code org 100h start: jmp l hello_message db 'Hello, world!', 0dh, 0ah, '$’ l: db 0B4h,09h ;mov ah,9 mov dx,offset hello_message int 21h mov ax,4c00h end start