Konuyu görüntüle
IUCODERS FORUM > Duyurular > Okul ile ilgili > Mikroişlemciler
Yazar
uslanmaz4


avatar
ANKARA
Kayıt: 15.01.2006
08.01.2008-16:05 #33965
"Mr.Gones" stringini tarıyıp "G" harfini "j" ile değiştiren program

.data
data1 db 'Mr.Gones','$'
.code
main proc far
mov ax,@data
mov ds,ax
mov es,ax
cld
mov di,offset data1
mov cx,09
mov al,'G'
repne scasb
jne over
dec di
mov byte ptr[di],'J'
over: mov ah,09
mov dx,offset data1 
lea dx,data1
int 21h  
mov ah, 1
 int 21h
mov ah,4ch
int 21h
main endp
end main


Birde boyle deneyin





kedicik kedicik
Yazar
gultekinm


avatar

Kayıt: 02.02.2006
08.01.2008-18:25 #33971
offman yazdi
 
arkdaşlar int veya double sayılarla nasıl işlem yapabilirim daha doğrusu mesela
data1 db 2,3,5,7,8,9,'$'
ben bu sayıları toplatıyorum tamam duzgun olarak topluyor istediğim deger ama ekrana basınca asci değerini basıyor ne yapcam ?


kodu çalıştırdıktan sonra vars butonuna tıklayarak DATA segmentinde tanımladıgın degişkenllerin değerlerini görebiliyorsun show as signed olarak degiştirirsen normal bir şekilde görebilirsin





just so tired of being me
Yazar
aliozkn


avatar
Manisa
Kayıt: 13.04.2006
08.01.2008-18:27 #33972
Edit: gerekiyormuş:)








Yazar
offman


avatar
Kayseri
Kayıt: 20.01.2006
08.01.2008-20:21 #33976
bandit yazdi
 
offman yazdi
 
arkdaşlar int veya double sayılarla nasıl işlem yapabilirim daha doğrusu mesela
data1 db 2,3,5,7,8,9,'$'
ben bu sayıları toplatıyorum tamam duzgun olarak topluyor istediğim deger ama ekrana basınca asci değerini basıyor ne yapcam ?


kodu çalıştırdıktan sonra vars butonuna tıklayarak DATA segmentinde tanımladıgın degişkenllerin değerlerini görebiliyorsun show as signed olarak degiştirirsen normal bir şekilde görebilirsin

O tamada ben ekrana basmak istiyorum bu değerleri?





331. KSD
*.NET DEVELOPER




Yazar
emracekic


avatar
adana
Kayıt: 21.01.2006
08.01.2008-20:37 #33977
Gones Jones i

arkadaslar buyk hafi kucuk harfe ceviren program uzerinde degişiklik yaptım çalışıyo alabilirsininiz

 

; this is a program in 8086 assembly language that
; accepts a character string from the keyboard and
; stores it in the string array. the program then converts
; all the lower case characters of the string to upper case.
; if the string is empty (null), it doesn't do anything.

name "upper"

org 100h


jmp start


; first byte is buffer size,
; second byte will hold number
; of used bytes for string,
; all other bytes are for characters:
string db 20, 22 dup('?')

new_line db 0Dh,0Ah, '$' ; new line code.

start:

; int 21h / ah=0ah - input of a string to ds:dx,
; fist byte is buffer size, second byte is number
; of chars actually read. does not add '$' in the
; end of string. to print using int 21h / ah=09h
; you must set dollar sign at the end of it and
; start printing from address ds:dx + 2.

lea dx, string

mov ah, 0ah
int 21h

mov bx, dx
mov ah, 0
mov al, [bx+1]
add bx, ax ; point to end of string.

mov asda [bx+2], '$' ; put dollar to the end.

; int 21h / ah=09h - output of a string at ds:dx.
; string must be terminated by '$' sign.
lea dx, new_line
mov ah, 09h
int 21h


lea bx, string

mov ch, 0
mov cl, [bx+1] ; get string size.

jcxz null ; is string is empty?

add bx, 2 ; skip control chars.

upper_case:

; check if it's a lower case letter:
;cmp byte ptr [bx], 'a'
;jb ok ;buyuk degilse zipla
;cmp byte ptr [bx], 'z'
;ja ok ;buyukse zipla
cmp byte ptr [bx], 'G'
jne diger
mov [bx],'J'
diger:
cmp byte ptr [bx], 'g'
jne ok
mov [bx],'j'


; convert to uppercase:

; upper case letter do not have
; third bit set, for example:
; 'a' : 01100001b
; 'a' : 01000001b
; upper case mask : 11011111b

; clear third bit:
;and byte ptr [bx], 11011111b

ok:
inc bx ; next char.
loop upper_case


; int 21h / ah=09h - output of a string at ds:dx.
; string must be terminated by '$' sign.
lea dx, string+2
mov ah, 09h
int 21h

; wait for any key press....
mov ah, 0
int 16h


null:
ret ; return to operating system.








emra çekiç



Yazar
volkan


avatar
Giresun
Kayıt: 26.07.2006
09.01.2008-02:41 #34002
offman yazdi
 
arkdaşlar int veya double sayılarla nasıl işlem yapabilirim daha doğrusu mesela
data1 db 2,3,5,7,8,9,'$'
ben bu sayıları toplatıyorum tamam duzgun olarak topluyor istediğim deger ama ekrana basınca asci değerini basıyor ne yapcam ?


Eğer sum'ı tuttuğun saklayıcı ax ise

mov     dx, ax

mov     ah, 0eh

or      dh, 30h
mov     al, dh
int     10h

or      dl, 30h
mov     al, dl
int     10h


Bu işe yaramalı.. Geç oldu ama :)






Yazar
alpersara


avatar

Kayıt: 12.01.2006
09.01.2008-03:04 #34003
arkadaslar bu mr. gones lu örneği klavyeden girmek istersem offseti nasıl ayarlayacağım bir turlu beceremedim.yapabilen birisi paylasırsa sevinirim.





Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
09.01.2008-12:00 #34006
Sınava giren herkese 5 puan veriliyormuş ve 2. giren gruptan (duyduklarım doğruysa) en yüksek 8 alan varmış

zamanın ötesinde edit: En yüksek 10 varmışbiggrin





www.sonergonul.net





Yazar
reccae


avatar
istanbul
banlandı
Kayıt: 15.02.2006
09.01.2008-12:31 #34007
sınava girmeyenlerin finalde çekeceği var. gerçi girenlerde bişey yapamadı ama yinede 5-8 puan önem kazanır finalde laughing
herkese geçmiş olsun.

bu arada wardom notlar 30 üstünden. 10 diyip geçme yani sillysilly





insa ettigim binanin cimentosu kelâm

Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
09.01.2008-12:41 #34008
Evet biliyorum recep %30'u alınıyormuş şimdi öğrendim.Ama yine de sınav çıkışı "sınavım güzeldi","sınav kolaydı" die bişey hiç duymadım.Umarım final istediğiniz gibi olur.Tabi dersin gerekliliği de ayrı bir konuthinking





www.sonergonul.net





Yazar
reccae


avatar
istanbul
banlandı
Kayıt: 15.02.2006
09.01.2008-12:48 #34009
wardom yazdi
 
Evet biliyorum recep %30'u alınıyormuş şimdi öğrendim.Ama yine de sınav çıkışı "sınavım güzeldi","sınav kolaydı" die bişey hiç duymadım.Umarım final istediğiniz gibi olur.Tabi dersin gerekliliği de ayrı bir konuthinking


sınav basitti.
kimseden duymadıysan benden duy. sadece dizideki 5 sayıyı toplayıp ekrana bunlardan türeyen bir sayı yazdırmamız gerekiyordu.

"haftalık ücretiniz: 720 ytldir" gibi. tabi onaltılık sisteme alışınca onluk sistemde sudan çıkmış balığa döndüm ben şahsen biggrin






insa ettigim binanin cimentosu kelâm

Yazar
ridaniye


avatar
antalya
Kayıt: 26.04.2006
09.01.2008-13:38 #34015
emracekic yazdi
 
Gones Jones i

arkadaslar buyk hafi kucuk harfe ceviren program uzerinde degişiklik yaptım çalışıyo alabilirsininiz

; this is a program in 8086 assembly language that
; accepts a character string from the keyboard and
; stores it in the string array. the program then converts 
; all the lower case characters of the string to upper case. 
; if the string is empty (null), it doesn't do anything.

name "upper"

org 100h


jmp start


; first byte is buffer size,
; second byte will hold number
; of used bytes for string,
; all other bytes are for characters:
string db 20, 22 dup('?')

new_line db 0Dh,0Ah, '$'  ; new line code.

start:

; int 21h / ah=0ah - input of a string to ds:dx, 
; fist byte is buffer size, second byte is number 
; of chars actually read. does not add '$' in the
; end of string. to print using int 21h / ah=09h
; you must set dollar sign at the end of it and 
; start printing from address ds:dx + 2.

lea dx, string

mov ah, 0ah
int 21h

mov bx, dx
mov ah, 0
mov al, [bx+1]
add bx, ax ; point to end of string.

mov asda [bx+2], '$' ; put dollar to the end.

; int 21h / ah=09h - output of a string at ds:dx.
; string must be terminated by '$' sign.
lea dx, new_line
mov ah, 09h
int 21h


lea bx, string

mov ch, 0
mov cl, [bx+1] ; get string size.

jcxz null ; is string is empty?

add bx, 2 ; skip control chars.

upper_case:

; check if it's a lower case letter:
;cmp byte ptr [bx], 'a'
;jb ok ;buyuk degilse zipla 
;cmp byte ptr [bx], 'z'
;ja ok ;buyukse zipla
cmp byte ptr [bx], 'G'
jne diger
mov [bx],'J'
diger:
cmp byte ptr [bx], 'g'
jne ok
mov [bx],'j'


; convert to uppercase:

; upper case letter do not have
; third bit set, for example:
; 'a'             : 01100001b
; 'a'             : 01000001b
; upper case mask : 11011111b

; clear third bit:
;and byte ptr [bx], 11011111b

ok:
inc bx ; next char.
loop upper_case


; int 21h / ah=09h - output of a string at ds:dx.
; string must be terminated by '$' sign.
lea dx, string+2
mov ah, 09h
int 21h
 
; wait for any key press....
mov ah, 0
int 16h 
 
 
null:
ret  ; return to operating system.




Kodu yanlşı yere yazmışsın Emra. Hiç yoktan sayfayı uzatiyosun yani :)





Yazar
ganim


avatar

Kayıt: 09.07.2006
10.01.2008-03:31 #34082
reccae yazdi
 
wardom yazdi
 
Evet biliyorum recep %30'u alınıyormuş şimdi öğrendim.Ama yine de sınav çıkışı "sınavım güzeldi","sınav kolaydı" die bişey hiç duymadım.Umarım final istediğiniz gibi olur.Tabi dersin gerekliliği de ayrı bir konuthinking


sınav basitti.
kimseden duymadıysan benden duy. sadece dizideki 5 sayıyı toplayıp ekrana bunlardan türeyen bir sayı yazdırmamız gerekiyordu.

"haftalık ücretiniz: 720 ytldir" gibi. tabi onaltılık sisteme alışınca onluk sistemde sudan çıkmış balığa döndüm ben şahsen biggrin


her ne kadar assembly yazmak hoşuma gitsede içimde bir güç "bu dili öğrenme" diye diretiyor. bende onu dinliyorum.

hocamızın notlama sistemine de hayran kaldım, derliyor sonuca bakıyor ve koda şöyle bir göz gezdirip 5,6,8,10,12*,15 gibi notlar verebiliyor. zor mesele...

(12 aldım mutluyum :)

bence de sınav kolaydı ama ciddi çalışmadığımız için yüksek not alamadık sanırım, ben en fazla 25 duydum, 30 alan var mı?






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
10.01.2008-09:19 #34087
sınav kolaydı kitaptaki orneklere çalışınca yapılabiliyor. benim takıldığım yer ekrana birşeyler yazdırmaktı. ama genelinde kolay bir sınavdı. bu da finalin baya zor olacağı manasına geliyor :)





N/A
Yazar
gultekinm


avatar

Kayıt: 02.02.2006
10.01.2008-09:49 #34088
;Bir kisinin calisma saatinin 40 saat oldugunu ve saat basi 12 ytl aldigini dusunelim
;Buna ek olarak fazla mesai yaptigi her saat icin 18 ytl almaktadir
;Haftalik kazanc, Ek mesai kazanci ve Toplam Kazanci hesaplayan bir program yaziniz
;Gunluk fazla mesai over_8_hrs DB 3,5,2,4,1 olrak tanimlanmistir

data segment
    haftalik_kaz db "Haftalik Kazanci:","$" 
    ek_mes db "Ek mesai Kazanci:","$" 
    top_kaz db "Toplam Kazanci   :","$" 
      
    over_8_hrs db 3,5,2,4,1 
    
    haf_cal_sa db 40
    saat_ucr db 12 
    ek_mes_ucr db 18 
    
    haftalik dw ? 
    ek dw ? 
    toplam dw ?
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:

    mov ax, data
    mov ds, ax
    mov es, ax
      
    
    mov al,haf_cal_sa
    mul saat_ucr 
     
     
    mov haftalik,ax
    mov toplam,ax 
                   
                   
         sub ax,ax 
         mov si,offset over_8_hrs
         mov ek,00
         mov cx,05
    back:mov al,ek_mes_ucr
         mov bl,[si]
         mul bl
         inc si 
         add ek,ax
         add toplam,ax
         loop back 
         
         
              
         mov ah,09
         mov dx,offset haftalik_kaz
         int 21h 
         sub ax,ax
         mov ax,haftalik 
         call yazdir
       
         mov ah,02  ;kursoru alt satira gecir
         mov bh,00  ;
         mov dl,00  ;
         mov dh,01  ;
         int 10h 
          
         
         mov ah,09
         mov dx,offset ek_mes
         int 21h 
         sub ax,ax
         mov ax,ek
         call yazdir 
         
         mov ah,02   ;kursoru alt satira gecir
         mov bh,00   ;
         mov dl,00   ;
         mov dh,02   ;
         int 10h
         
         sub ax,ax
         mov ax,toplam
         mov ah,09
         mov dx,offset top_kaz
         int 21h 
         sub ax,ax
         mov ax,toplam
         call yazdir   

             
    
    mov ah, 1
    int 21h
    
    mov ax, 4c00h 
    int 21h    
ends    

yazdir proc
cmp ax, 0
jne next
    push ax
    mov al, '0'
    mov ah, 0eh
    int 10h
    pop ax
    ret 
next:
    pusha
    mov dx, 0
    cmp ax, 0
    je cik
    mov bx, 10
    div bx    
    call next
    mov ax, dx
    add al, 30h
    mov ah, 0eh
    int 10h    
    jmp cik
cik:
    popa  
    ret  
endp

end start 


kodun girisine soruyuda yazdim
1. grup cevabi boyle olmaliydi, ekrana basmak gercekten cok zor bi olay
diger gruplarin sorularini da yollayabilirseniz sevinirim





just so tired of being me
1 2 3 4 5 6 7 8 9
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb