Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

assembly for dummies :)


Ceday

Öne çıkan mesajlar

burda asm'yi acayip seven birileri vardı.
o anlatan bişiler yazmıştı.
ha bide ders notlarımın sayfası açımı bakayım.[signature][hline]I don't think people meant to be by themselves.
That's why actually you find someone you care about, hold them tight.
Because nothing sucks more than feeling all alone,no matter how many people are around. Scrubs
Link to comment
Sosyal ağlarda paylaş

http://www.baskent.edu.tr/~kiankov/BIL_324
bak bide bu var.
ders notları güzel anlatır ama biraz uzun gelebilir.
sadece örneklere bakmanı tavsiye ederim.
bide fontları acayip büyük adam kör olduğu içn.[signature][hline]I don't think people meant to be by themselves.
That's why actually you find someone you care about, hold them tight.
Because nothing sucks more than feeling all alone,no matter how many people are around. Scrubs
Link to comment
Sosyal ağlarda paylaş

hnn sanırım emu8086 eski model işlemcileri destekliyor. hani bu ilk çıkan 8086ları.

bu 8086 yerine Visual Studio yu kullan mesela C ile yaparsan;

void asmfonskiyonu()
{
__asm
{
//buraya asm kodu
}
}

sonra da fonksiyonun başına breakepoint koyarsın, View dan register windowu ve belleği gösteren toolbox ları koyarsın. emu8086 ya yakın bişi olur :) tabi burda psikopat denemeler yapamazsın çünkü emülasyon değil gerçek program çalışıyor, bilgisayar falan kitlenebilir belki daha saçma şeyler de olabilir :)[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !
Link to comment
Sosyal ağlarda paylaş

Evet haklısın. Ama HLA olarak verdiği örnekler zaten çok alt düzey olduğu için pek sorun yaşanmıyor. Yani zaten kitabın amacı size assembly kullanmayı öğretmek. Yani ister HLA, ister Makina düzeyi (OS olmadan), Ister MacroAssebler, isterde C Inline ile zaten kitabı okuduktan sonra kod yhazabilirsiniz. Kitabın asıl can alıcı noktaları. Size referans bilgi vermek yerine teknikleri ve algoritmalari vermek. Örn: nasil bir stack hazırlayacaksın. Nasil iyi bir hafıza yönetimi yapılır (Globaller nereye konmalıdır, local değişkenleri nerde durmalıdır, constantları nereye koymak lazım vs vs)

Ben hem 16bitliğini ve 32bitliği lazer yazıcı vasitasi ile yazdırdım. Ben o kitaplardan öğrendim ve gerçekten sağlam kitaplar.

Mesela piyasada pek çok kitap bulabilirsin. En yaygın örneği Beta yayınblarının Bahannetin Bayburan'ın yazığı kırmızı kitaptır. Resmen çöplük...
Link to comment
Sosyal ağlarda paylaş

abi anlasılan size bunlar basit :)

hadi yapıverin o zaman su ödevi, kafayı sıyırcam ben burda..

said:
Write a program in assembly language that performs basic arithmetic operations (addition/subtraction/multiplication/division) based on the inputs entered using the keyboard and displays the output of the operation. The input format will be as follows: {0..9}{+,-,/,*}{0..9} (Note that operations will be performed on single digits) Examples of inputs are as follows: 1+2 3*5 5/1 4-6 Submit your program through webCT


girilcek veri direk 1+2 gibi filan. rakam ve operatorü ayrı ayrı almıcaksınız yani.

gece 12.00 deadline ona göre :p
Link to comment
Sosyal ağlarda paylaş

Tam olarak çalışıp çalışmayacağıdna emin değilim MASM bulamadım. (Daha doğrusu kasmadım) Umarım hatasızdır ve işini görür.

CSEG segment
getc
mov bl, al
sub bl, 30h ; BL ilk sayı, ASCII'yi BCD'ye çevir bir oppcode vardı bu işi yapan ama hatırlayamadım. Sanrırm aad'dı.

getc
mov cl, al ; CL = operasyon

getc
mov bh, al
sub bh, 30h ; BH ikinci sayı ASCII'yi BCD'ye çevir

cmp ah, [buraya '-' ascii kodu gelecek]
jne SW1

xor ax,ax ; hızlı 0 lama.
mov al, bl
sub al, bh
puti
jmp GoGoGo

SW1:cmp cl, [buraya '+' ascii kodu gelecek]
jne SW2
xor ax,ax ; hızlı 0 lama.
mov al, bl
add al, bh
puti
jmp GoGoGo

SW2:cmp cl, [buraya '*' ascii kodu gelecek]
jne SW1
xor ax,ax ; hızlı 0 lama.
mov al, bl
mul bh
puti
jmp GoGoGo

SW3:cmp cl, [buraya '/' ascii kodu gelecek]
jne SW3
xor ax,ax ; hızlı 0 lama.
mov al, bl
div bh
mov ax, dx
puti

GoGoGo:
CSEG ends
end

Bak benim cpp ödevim var.(mış) Onu yapmadım daha bununla uğraştım :)

[Bu mesaj Ametal tarafından 25 Ekim 2004 21:13 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

benim bi division kaldı..bu arada 2-9 gibi sayılar icin sonuc -7 cıkması lazım. ben orda -7 icin cok amelilik yaptım. görünce anlarsınız zaten :) daha kısa yolu var mıdır? (7nin önüne PRINT '-' ile "-" yazdırmadan)

said:

MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h

MOV num1,AL
SUB num1,30h

MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h

MOV OP,AL

MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h


MOV num2,AL
SUB num2,30h

CMP OP, 'A'
JE GoToAdd

CMP OP, 'S'
JE GoToSub

CMP OP, 'M'
JE GoToMul

CMP OP, 'D'
JE GoToDiv


GoToAdd:
MOV AL,num1
ADD AL,num2
MOV AH,0
CALL print_num
JMP FINISH


GoToSub:
MOV AL,num1
CMP AL,num2
JB GoToSub2 ;if the result is negative


MOV AL,num1
SUB AL,num2
MOV AH,0
CALL print_num
JMP FINISH

GoToSub2:
MOV AL,num2
SUB AL,num1
;MOV AH,10000000B
MOV CX,0111111111111111B
SUB CL,AL
ADD CL,1
MOV CH,11111111B
MOV AX,CX
CALL print_num
JMP FINISH


GoToMul:
MOV AL,num1
MUL num2
CALL print_num
JMP FINISH

GoToDiv:
MOV AL,num1
MUL num2
CALL print_num
JMP FINISH


FINISH:
RET

num1 DB ?
num2 DB ?
OP DB ?


[Bu mesaj CEDAY tarafından 25 Ekim 2004 22:26 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

bu da son hali bu arada..emu8086 ile calıstırabilirsiniz..
said:

#make_COM#

include 'emu8086.inc'

ORG 100h

MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h

MOV num1,AL
SUB num1,30h
MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h

MOV OP,AL

MOV AH,00h
INT 16h
MOV AH,0Eh
INT 10h


MOV num2,AL
SUB num2,30h

CMP OP, 'A'
JE GoToAdd

CMP OP, 'S'
JE GoToSub

CMP OP, 'M'
JE GoToMul

CMP OP, 'D'
JE GoToDiv


GoToAdd:
MOV AL,num1
ADD AL,num2
MOV AH,0
CALL print_num
JMP FINISH


GoToSub:
MOV AL,num1
CMP AL,num2
JB GoToSub2

MOV AL,num1
SUB AL,num2
MOV AH,0
CALL print_num
JMP FINISH

GoToSub2:
MOV AL,num2
SUB AL,num1
MOV CX,0111111111111111B
SUB CL,AL
INC CL
MOV CH,11111111B
MOV AX,CX
CALL print_num
JMP FINISH


GoToMul:
MOV AL,num1
MUL num2
CALL print_num
JMP FINISH

GoToDiv:
MOV AH,0
MOV AL,num1
DIV num2
PRINT ' Result: '
MOV CH,AH
MOV AH,0
CALL print_num
PRINT ' Remainder: '
MOV AL,CH

CALL print_num
JMP FINISH



FINISH:
RET



num1 DB ?
num2 DB ?
OP DB ?




DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
DEFINE_PTHIS

END
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...