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

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

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