7 Temmuz 2014 Pazartesi

Assembly Dilinde Klavyeden Cümle Girme (asm)

Emu8086 da oldukça basit bir şekilde derlenip çalıştırılabilecek program: 

; You may customize this and other start-up templates; 
; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h

.model small
.stack 64
.data

snc db 10,13,’ ’,’$’,10,13          ; sonuc icin ayrilan alan

.code

mov     ax,@data
mov     ds,ax
mov     es,ax

dizi_al:
mov     ah,01                         ;klavyeden karakter isteniyor
int       21h                            ;girilen al’de

cmp     al,13                          ;al’deki değeri enter ile karşılaştır
jz        yaz                            ;enter’e basılmışsa yaz’a atla

inc       si                              ;si ile kelime içinde bir sonraki karaktere ilerle

cmp     al,61h                         ;al içindeki değerle a=61h karşılaştır
jg        degis                          ;girilen değerden buyukse degis’e atla
jl         sbt                             ;girilen değerden kucukse sbt’e atla

degis:
sub       al,20h                        ;al değerinden 20h çıkar

sbt:
sub       al,0h                          ;al değerinden 0h çıkar

mov      [snc+si],al                  ;kelime içerisinde sıradaki harfe son al değerini yukle

jmp       dizi_al                        ;dizi başlangıcına atla 

yaz:
mov      ah,09h                       ;ekrana snc’de tutulan değer yazılıyor
lea       dx,snc 
int       21h 

dosa:                                     ;programı terket
mov     ah,4ch 
int       21h 
end


ret




2 yorum: