วันพุธที่ 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

วันอังคารที่ 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

วันจันทร์ที่ 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 หลัก

วันอาทิตย์ที่ 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

วันพฤหัสบดีที่ 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)ให้คลิกที่เมนูไฟล์แล้วเลือกดาวน์โหลด







Assembly : การ debug โปรแกรมโดยเปลี่ยนข้อความข้างในโปรแกรม

ขั้นเตรียมการ
copy ไฟล์ที่คอมไพจากภาษาซีที่เป็นนามสกุล .exe ไปไว้ที่เดียวกันกับไฟล์  

- ใช้คำสั่ง debug  
- กด d ไปเรื่อยๆจนเจอข้อความที่เขียนไว้ในภาษาซี
- จากนั้นจด address ไว้ว่าจะแก้ address ไหน
- เปลี่ยนข้อความเป็นฐาน16ไปที่เว็บ   http://easycalculation.com/ascii-hex.php
- ช่องบนสุดกรอกข้อความที่ต้องการ
- การนำไปใช้ให้ใช้เลขในช่อง Equivalent Hex Value

การป้อนข้อมูลลง address
- ใช้คำสั่ง eตามด้วย address ตัวอย่าง  e1580 แล้ว enter
- กรอกรหัส ascii ทีละชุดแล้วกด space bar เพื่อกรอกข้อมูลชุดถัดไปเมื่อครบแล้วกด enter
- การดูผลว่าเป็นอย่างไรป้อน dตามด้วย address ก่อนข้อความในภาษาซีที่เราแสดง ตัวอย่าง d1570







วันพุธที่ 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);      
     
    }
}