![]()
เซกเมนต์ Segment
| ![]() |
ปรับปรุง : 2562-02-01 (ปรับ template) |
|
Digital logic | OS | คำสั่งดอส | Batch | Debug | Assembly | GWBasic | Docker | |
|
:: โปรแกรมนี้เป็นการกำหนด segment แบบเดิม
:: ผลของโปรแกรมนี้คือ ตัวอักษร c เพราะตัวอักษร a คือ 61h |
seg1.asm : โปรแกรมพิมพ์อักษร a ด้วย int 21 บริการ ah=2 |
sseg segment db 64 dup(?) sseg ends dseg segment a db 61h dseg ends cseg segment main proc far assume cs:cseg,ds:dseg,ss:sseg mov ax,dseg mov ds,ax mov dl,a mov ah,2h int 21h mov ah,4ch int 21h main endp cseg ends end main |
:: โปรแกรมนี้เป็นการกำหนด segment แบบเดิม
:: ผลของโปรแกรมนี้คือ ตัวอักษร c เพราะตัวอักษร a คือ 61h |
seg2.asm : โปรแกรมพิมพ์อักษร ที่เกิดจากคำสั่ง add register al และ bl |
sseg segment db 64 dup(?) ; กำหนดที่ว่าง 64 byte sseg ends dseg segment data1 db 31h data2 db 32h sum db ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg,ss:sseg mov ax,dseg mov ds,ax mov al,data1 mov bl,data2 add al,bl mov sum,al mov dl,sum mov ah,2 int 21h mov ah,4ch int 21h main endp cseg ends end main |
:: โปรแกรมนี้เป็นการกำหนด segment แบบเดิม
:: ผลของโปรแกรมนี้คือ ตัวอักษร a ถึง z แล้ววนกลับมา a อีก |
seg3.asm : พิมพ์อักษร 1 ตัว รอรับ any key พิมพ์ถึง z แล้ววนมา a ใหม่ หยุดเมื่อกด Ctrl-C |
sseg segment db 64 dup(?) ; กำหนดที่ว่าง 64 byte sseg ends dseg segment data1 db 60h data2 db 01h sum db ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg,ss:sseg mov ax,dseg mov ds,ax mov al,data1 mov bl,data2 burin: add al,01h mov sum,al mov dl,sum mov ah,2h int 21h mov ah,08h int 21h mov al,sum cmp al,7ah jne burin mov al,60h jmp burin main endp cseg ends end main |
:: โปรแกรมนี้เป็นการกำหนด segment แบบเดิม
:: นำ seg3.asm มาปรับให้สั้นลง |
seg4.asm : พิมพ์อักษร 1 - 5 แล้วเลิกการทำงาน |
sseg segment db 64 dup(?) ; กำหนดที่ว่าง 64 byte sseg ends dseg segment data db 30h sum db ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg,ss:sseg mov ax,dseg mov ds,ax mov al,data burin: add al,01h mov sum,al mov dl,sum mov ah,2h int 21h mov al,sum cmp al,35h jne burin mov ah,4ch int 21h main endp cseg ends end main |
:: โปรแกรมนี้เป็นการกำหนด segment แบบใหม่ และง่ายกว่า
:: ผลของโปรแกรมนี้คือ ตัวอักษร c เพราะตัวอักษร a คือ 61h และเพิ่มการพิมพ์ String เข้าไปจากตัวอย่างข้างต้น |
seg5.asm : พิมพ์ cburin rujjanapan แล้วเลิกการทำงาน |
.model small .stack 64h .data data1 db 31h data2 db 32h data3 db 'burin rujjanapan $' sum db ? .code main proc mov ax,@data mov ds,ax mov al,data1 mov bl,data2 add al,bl mov sum,al mov dl,sum mov ah,2 int 21h lea dx,data3 mov ah,9 int 21h mov ah,4ch int 21h main endp end main |
|
Load Time = 196 milliseconds Height = 3438 Width = 1264
|
"Imagination is more important than knowledge" - Albert Einstein |