บล๊อกนี้ทำขึ้นเพื่อ ให้นำโค๊ดโปรแกรม ไม่ว่าจะเป็น Java, Assembly ,C ,C++ หรือภาษาอื่นๆ (ที่เขียนได้นะ -.-) มาเผยแพร่ให้เข้าใจว่าโปรแกรมแต่ละตัวนั้น เขียนขึ้นมายังไง ? อาจจะมีผิดพลาดไปบ้าง (ไม่มากก็ มากกว่า) ก็ต้องขออภัยมา ณ ที่นี้ด้วย
20 สิงหาคม 2554
[Assembly]โปรแกรมแปลงค่าในตาราง
.model small
.data
TAB1 DB ‘0123456789’
VBCD DB 05h
VASC DB 30h
.code
mov ax,@data
mov ds,ax
mov ax,0000h
mov al,VBCD
mov di,ax
mov al,TAB1[di]
mov VASC,al
mov ax,4c00h
int 21h
end
[Assembly]โปรแกรมแปลงค่าในตาราง โดยใช้การคูณ
.model small
.data
TBCD DB 'Even',13,10,'$'
DB 'Odd ',13,10,'$'
DB 'Even',13,10,'$'
DB 'Odd ',13,10,'$'
DB 'Even',13,10,'$'
DB 'Odd ',13,10,'$'
DB 'Even',13,10,'$'
DB 'Odd ',13,10,'$'
DB 'Even',13,10,'$'
DB 'Odd ',13,10,'$'
STR1 DB 'ENTER NUMBER: $'
STR2 DB 13,10,'Number is $'
SCALE DB 7
VDEC DB '0'
VBCD DB 00h
.code
mov ax,@data
mov ds,ax
mov dx,offset STR1
mov ah,09h
int 21h
mov ah,01h
int 21h
mov VDEC,al
sub al,'0'
mov VBCD,al
mov dx,offset STR2
mov ah,09h
int 21h
mov dx,offset TBCD
mov al,VBCD
mul SCALE
add dx,ax
mov ah,09h
int 21h
mov ax,4c00h
int 21h
end
[Assembly]โปรแกรม บวก ลบ แบบ BCD (ป้อนค่าและแสดงผลได้)
.model small
.data
BALANCE DB 'Balance: $'
RECEIVE DB 13,10,'Receive: $'
SELL DB 13,10,'Sell: $'
REMAIN DB 13,10,'Remain = '
VRemain DB '00000',13,10,'$'
VBalance DB 5,?,'0000'
VReceive DB 5,?,'0000'
VSell DB 5,?,'0000'
.code
mov ax,@data
mov ds,ax
mov dx,offset BALANCE ;input Balance
mov ah,09h
int 21h
mov dx,offset VBalance
mov ah,0ah
int 21h
mov dx,offset RECEIVE ;input Receive
mov ah,09h
int 21h
mov dx,offset VReceive
mov ah,0ah
int 21h
mov dx,offset SELL ;input Sell
mov ah,09h
int 21h
mov dx,offset VSell
mov ah,0ah
int 21h
mov al,VBalance+5 ;digit 4
add al,VReceive+5
aaa
add al,30h
sbb al,VSell+5
aas
mov bl,al
mov al,VBalance+4 ;digit 3
adc al,VReceive+4
aaa
add al,30h
sbb al,VSell+4
aas
mov bh,al
mov al,VBalance+3 ;digit 2
adc al,VReceive+3
aaa
add al,30h
sbb al,VSell+3
aas
mov dl,al
mov al,VBalance+2 ;digit 1
adc al,VReceive+2
aaa
mov dh,al
mov al,30h ;digit 0
adc al,VRemain
aaa
add al,30h
mov VRemain,al
mov al,dh ;digit 1
add al,30h
sbb al,VSell+2
aas
mov dh,al
mov al,VRemain ;digit 0
sbb al,0
aas
add al,30h
mov VRemain,al
add bx,3030h ;keep digit 1-4
mov VRemain+3,bh
mov VRemain+4,bl
add dx,3030h
mov VRemain+1,dh
mov VRemain+2,dl
mov dx,offset REMAIN ;show digit 0-4
mov ah,09h
int 21h
mov ax,4c00h
int 21h
end
สมัครสมาชิก:
บทความ (Atom)