วันอังคารที่ 20 สิงหาคม พ.ศ. 2556
LODSB
stseg segment para stack
db 64 dup('A');
sttop label word
stseg ends
dtseg segment
str1 db 'Hello,World',0dh,0ah,'$'
str2 db 'Hello,World',0dh,0ah,'$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov es,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;-------------------------------------------------------------------
lea si,str1
lodsb
mov dl,al
mov ah,02
int 21h
;-------------------------------------------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
repne scasb ค้นหาตัวอักษร
stseg segment para stack
db 64 dup('A');
sttop label word
stseg ends
dtseg segment
str1 db 'Hello,World',0dh,0ah,'$'
str2 db 'Hello,World2',0dh,0ah,'$'
mess1 db 'Found',0dh,0ah,'$'
mess2 db 'Not Found',0dh,0ah,'$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov es,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;-------------------------------------------------------------------
lea di,str1
mov al,'r'
cld
mov cx,14
repne scasb
je found
notfound:
lea dx,mess2
mov ah,9
int 21h
jmp done
found:
lea dx,mess1
mov ah,9
int 21h
jmp done
done:
;-------------------------------------------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
20/08/2013 เปรียบเทียบ สตริง
stseg segment para stack
db 64 dup('A');
sttop label word
stseg ends
dtseg segment
str1 db 'Hello,World',0dh,0ah,'$'
str2 db 'Hello,World',0dh,0ah,'$'
mess1 db 'Str1 is match Str2',0dh,0ah,'$'
mess2 db 'Str1 does not match Str2',0dh,0ah,'$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov es,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;-------------------------------------------------------------------
lea si,str1
lea di,str2
cld
mov cx,14
repe cmpsb
je match
nomatch:
lea dx,mess2
mov ah,9
int 21h
jmp done
match:
lea dx,mess1
mov ah,9
int 21h
jmp done
done:
;-------------------------------------------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
20/08/2013
stseg segment para stack
db 64 dup('A');
sttop label word
stseg ends
dtseg segment
str1 db 'Hello,World',0dh,0ah,'$'
str2 db 15 dup (' ')
mess db 'str2 = $'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov es,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;-------------------------------------------------------------------
lea si,str1
lea di,str2
cld
mov cx,14
rep movsb
lea dx,mess
mov ah,9
int 21h
lea dx,str2
mov ah,9
int 21h
;-------------------------------------------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
วันอังคารที่ 13 สิงหาคม พ.ศ. 2556
Assembly : String
stseg segment para stack
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
max db 100
count db 0
sentence db 100 dup (' ')
mess db 'Input String =>$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ah,9h
lea dx, mess
int 21h
mov ah,0ah
lea dx, max
int 21h
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
max db 100
count db 0
sentence db 100 dup (' ')
mess db 'Input String =>$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ah,9h
lea dx, mess
int 21h
mov ah,0ah
lea dx, max
int 21h
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
วันอังคารที่ 6 สิงหาคม พ.ศ. 2556
Assembly IF-ELSE
stseg segment para stack
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
mess1 db 'AX > BX',0dh,0ah,'$'
mess2 db 'AX <= BX',0dh,0ah,'$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ax,80
mov bx,80
cmp ax,bx
jle ELSE_IF
lea dx,mess1 ;AX > BX
mov ah,9
int 21h
JMP END_IF
ELSE_IF:
lea dx,mess2 ;AX < BX
mov ah,9
int 21h
END_IF:
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
mess1 db 'AX > BX',0dh,0ah,'$'
mess2 db 'AX <= BX',0dh,0ah,'$'
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ax,80
mov bx,80
cmp ax,bx
jle ELSE_IF
lea dx,mess1 ;AX > BX
mov ah,9
int 21h
JMP END_IF
ELSE_IF:
lea dx,mess2 ;AX < BX
mov ah,9
int 21h
END_IF:
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
Assembly CMP
stseg segment para stack
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
mess1 db 'AX > BX',0dh,0ah,'$' ;odh,oah = \n new line in c
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ax,30
mov bx,20
cmp ax,bx ; if ax > bx print 'ax>bx'
jnl PRINT
PRINT:
lea dx,mess1 ;dx -> mess1
mov ah,9
int 21h
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
mess1 db 'AX > BX',0dh,0ah,'$' ;odh,oah = \n new line in c
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
;----------------------------------
mov ax,30
mov bx,20
cmp ax,bx ; if ax > bx print 'ax>bx'
jnl PRINT
PRINT:
lea dx,mess1 ;dx -> mess1
mov ah,9
int 21h
;----------------------------------
mov ah,4ch
int 21h
main endp
cdseg ends
end main
วันเสาร์ที่ 6 กรกฎาคม พ.ศ. 2556
วันพุธที่ 26 มิถุนายน พ.ศ. 2556
Assembly : ตัวอย่างโจทย์ภาษาแอสเซมบลี แฟลกรีจิสเตอร์
1.คัดลอกค่าแฟลก CF,PF,AF,ZF และ SF ไปเก็บไว้ในรีจิสเตอร์ AH
2.นำค่าจากรีจิสเตอร์ AH ไปเก็บไว้ใน แฟลกรีจิสเตอร์
3.กำหนดให้ตารางมีค่า 77,34,89,98,17,66,55,21,49,16 ให้นำค่าตำแหน่งที่ 0 และ 7 จากตารางมาไว้ในรีจิสเตอร์ AL
2.นำค่าจากรีจิสเตอร์ AH ไปเก็บไว้ใน แฟลกรีจิสเตอร์
3.กำหนดให้ตารางมีค่า 77,34,89,98,17,66,55,21,49,16 ให้นำค่าตำแหน่งที่ 0 และ 7 จากตารางมาไว้ในรีจิสเตอร์ AL
วันอังคารที่ 25 มิถุนายน พ.ศ. 2556
Assembly : PUSH , POP
stseg segment para stack
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
mov ax,18
mov bx,33
push ax
push bx
pop cx
pop dx
mov ah,4ch
int 21h
main endp
cdseg ends
end main
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
mov ax,18
mov bx,33
push ax
push bx
pop cx
pop dx
mov ah,4ch
int 21h
main endp
cdseg ends
end main
วันจันทร์ที่ 24 มิถุนายน พ.ศ. 2556
PHP : random ตัวเลข n หลัก
function _generateRandom($length=6)
{
$_rand_src = array(array(48,57));
srand ((double) microtime() * 1000000);
$random_string = "";
for($i=0;$i<$length;$i++){
$i1=rand(0,sizeof($_rand_src)-1);
$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
}
return $random_string;
}
นำใช้
echo _generateRandom(); // 6 หลัก
echo _generateRandom(10); // 10 หลัก
{
$_rand_src = array(array(48,57));
srand ((double) microtime() * 1000000);
$random_string = "";
for($i=0;$i<$length;$i++){
$i1=rand(0,sizeof($_rand_src)-1);
$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
}
return $random_string;
}
นำใช้
echo _generateRandom(); // 6 หลัก
echo _generateRandom(10); // 10 หลัก
วันอาทิตย์ที่ 23 มิถุนายน พ.ศ. 2556
Assembly : โครงสร้างโปรแกรมภาษาแอสเซมบลี แบบยาว
stseg segment para stack
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
; ----สำหรับกำหนดตัวแปร----
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
; /*--------- ใส่ Code Program---------*/
mov ah,4ch
int 21h
main endp
cdseg ends
end main
db 64 dup('0');
sttop label word
stseg ends
dtseg segment
; ----สำหรับกำหนดตัวแปร----
dtseg ends
cdseg segment
main proc far
assume cs:cdseg,es:dtseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
mov ax,stseg
mov ss,ax
lea sp,sttop
; /*--------- ใส่ Code Program---------*/
mov ah,4ch
int 21h
main endp
cdseg ends
end main
ป้ายกำกับ:
ภาษาแอสเซมบลี,
Assembly
วันพฤหัสบดีที่ 20 มิถุนายน พ.ศ. 2556
Assembly : การติดตั้ง editplus สำหรับเขียนภาษาแอสแซมบลี
1. ก่อนอื่นเราต้องไปโหลดโปรแกรม editplus ที่เว็บนี้ก่อน http://www.editplus.com ติดตั้งให้เรียบร้อย (ผู้เขียนใช้เวอร์ชั่น Editplus 3.51)
2. จากนั้นโหลดไฟล์ที่ทำให้ code ที่เราเขียนมีสี คลิกที่นี่ (Google Drive) แตกซิบไปไว้ที่ C:\Program Files (x86)\EditPlus 3 หรือที่ๆเราติดตั้ง EditPlus
แนะนำให้ไว้ที่เดียวกันกับที่ติดตั้ง EditPlus เพราะจะได้ไม่เผลอไปลบไฟล์
3. โหลดโปรแกรมสำหรับคอมไพภาษาแอสแซมบลี TASM คลิกที่นี่ (Google Drive)นำไปแตกไว้ที่ drive c ให้เรียบร้อย
เมื่อเตรียมไฟล์ต่างๆเรียบร้อยแล้วเรามาตั้งค่าโปรแกรมกันเลย
1. เปิดโปรแกรม EditPlus แล้วไปที่เมนู Tools->Preferences แล้วคลิก Settings&syntax จากนั้นคลิกที่ Add ดังภาพ

2. เมื่อคลิกที่ Add แล้วให้ใส่ asm เป็นการตั้งชื่อให้มันว่าเป็นไฟล์ประเภทไหนจะตั้งอะไรก็ได้อาจจะตั้งเป็น Assembly อันนี้ก็แล้วแต่ชอบ

3.เป็นการใส่นามสกุลไฟล์ว่าจะให้แสดง code สีในนามสกุลอะไรเอาก็ใส่ asm ไปเลย

4. ตอนไปเป็นการนำไฟล์ Syntax ที่เราโหลดมาเอาเข้าไปในโปรแกรม ช่องที่ 1 ให้ browse ไปหาไฟล์ masm.stx ช่องที่ 2 ไฟล์ masm.acp ตามลำดับจากนั้นกด OK เป็นอันเสร็จสิ้นการตั้งค่าให้ Editplus

การ Compile ให้เข้า DosBox อันนี้ไม่ขอพูดถึงนะครับ จริงๆแล้วอยากนำเสนอการตั้งค่า Editplus มาช่วยในการ Compile จากตัวโปรแกรม Editplus เลยแต่ด้วยตัวโปรแกรม TASM ไม่สามารถรันบน Window ในเครื่องปัจจุบันได้ด้วยเหตุผลที่ว่าเราเข้ากันไม่ได้ - -"
ใช้คำสั่ง
C:\TASM\BIN>tasm filename.asm
C:\TASM\BIN>tlink filename
เพิ่มเติมสำหรับการโหลดโปรแกรมใน Google Drive (จะต้องมี e-mail ของ Google ในการ Login)ให้คลิกที่เมนูไฟล์แล้วเลือกดาวน์โหลด

2. จากนั้นโหลดไฟล์ที่ทำให้ code ที่เราเขียนมีสี คลิกที่นี่ (Google Drive) แตกซิบไปไว้ที่ C:\Program Files (x86)\EditPlus 3 หรือที่ๆเราติดตั้ง EditPlus
แนะนำให้ไว้ที่เดียวกันกับที่ติดตั้ง EditPlus เพราะจะได้ไม่เผลอไปลบไฟล์
3. โหลดโปรแกรมสำหรับคอมไพภาษาแอสแซมบลี TASM คลิกที่นี่ (Google Drive)นำไปแตกไว้ที่ drive c ให้เรียบร้อย
เมื่อเตรียมไฟล์ต่างๆเรียบร้อยแล้วเรามาตั้งค่าโปรแกรมกันเลย
1. เปิดโปรแกรม EditPlus แล้วไปที่เมนู Tools->Preferences แล้วคลิก Settings&syntax จากนั้นคลิกที่ Add ดังภาพ
2. เมื่อคลิกที่ Add แล้วให้ใส่ asm เป็นการตั้งชื่อให้มันว่าเป็นไฟล์ประเภทไหนจะตั้งอะไรก็ได้อาจจะตั้งเป็น Assembly อันนี้ก็แล้วแต่ชอบ
3.เป็นการใส่นามสกุลไฟล์ว่าจะให้แสดง code สีในนามสกุลอะไรเอาก็ใส่ asm ไปเลย
4. ตอนไปเป็นการนำไฟล์ Syntax ที่เราโหลดมาเอาเข้าไปในโปรแกรม ช่องที่ 1 ให้ browse ไปหาไฟล์ masm.stx ช่องที่ 2 ไฟล์ masm.acp ตามลำดับจากนั้นกด OK เป็นอันเสร็จสิ้นการตั้งค่าให้ Editplus
การ Compile ให้เข้า DosBox อันนี้ไม่ขอพูดถึงนะครับ จริงๆแล้วอยากนำเสนอการตั้งค่า Editplus มาช่วยในการ Compile จากตัวโปรแกรม Editplus เลยแต่ด้วยตัวโปรแกรม TASM ไม่สามารถรันบน Window ในเครื่องปัจจุบันได้ด้วยเหตุผลที่ว่าเราเข้ากันไม่ได้ - -"
ใช้คำสั่ง
C:\TASM\BIN>tasm filename.asm
C:\TASM\BIN>tlink filename
เพิ่มเติมสำหรับการโหลดโปรแกรมใน Google Drive (จะต้องมี e-mail ของ Google ในการ Login)ให้คลิกที่เมนูไฟล์แล้วเลือกดาวน์โหลด

ป้ายกำกับ:
Assembly Language,
Editplus,
Setting
Assembly : การ debug โปรแกรมโดยเปลี่ยนข้อความข้างในโปรแกรม
ขั้นเตรียมการ
copy ไฟล์ที่คอมไพจากภาษาซีที่เป็ นนามสกุล .exe ไปไว้ที่เดียวกันกับไฟล์
- ใช้คำสั่ง debug
- กด d ไปเรื่อยๆจนเจอข้อความที่เขี ยนไว้ในภาษาซี
- จากนั้นจด address ไว้ว่าจะแก้ address ไหน
- เปลี่ยนข้อความเป็นฐาน16ไปที่ เว็บ http://easycalculation.com/ ascii-hex.php
- ช่องบนสุดกรอกข้อความที่ต้องการ
- การนำไปใช้ให้ใช้เลขในช่อง Equivalent Hex Value
ป้ายกำกับ:
debug
วันพุธที่ 19 มิถุนายน พ.ศ. 2556
OOP : ความเร่ง a = (v2-v1)/t
/*
* My home work : ridtichai borseen
*/
package hw01;
import java.util.Scanner;
public class Hw01 {
public static void main(String[] args) {
float a;
float v1;
float v2;
float t;
Scanner sc = new Scanner(System.in);
System.out.print("Input V1 =>");
v1 = sc.nextFloat();
System.out.print("Input V2 =>");
v2 = sc.nextFloat();
System.out.print("Input T =>");
t = sc.nextFloat();
a = (v2-v1)/t;
System.out.println("A = (V2-V1)/T");
System.out.println(a+" = ("+v2+"-"+v1+")/"+t);
}
}
* My home work : ridtichai borseen
*/
package hw01;
import java.util.Scanner;
public class Hw01 {
public static void main(String[] args) {
float a;
float v1;
float v2;
float t;
Scanner sc = new Scanner(System.in);
System.out.print("Input V1 =>");
v1 = sc.nextFloat();
System.out.print("Input V2 =>");
v2 = sc.nextFloat();
System.out.print("Input T =>");
t = sc.nextFloat();
a = (v2-v1)/t;
System.out.println("A = (V2-V1)/T");
System.out.println(a+" = ("+v2+"-"+v1+")/"+t);
}
}
สมัครสมาชิก:
ความคิดเห็น (Atom)
