floating point perhitungan dalam bahasa Majelis

S

Suresh R

Guest
Hai,
iam tertarik untuk mengetahui apakah saya bisa melakukan perhitungan floating point di microcontroller AT89S52.
Jika ya, bisa ada orang yang memberi saya beberapa contoh tentang bagaimana hal itu bisa dilakukan dengan menggunakan bahasa pemrograman Assembly?

untuk misalnya: bagaimana bisa saya lakukan yang berikut ini menggunakan bahasa pemrograman Majelis??
3,43 5,98

ramah membantu saya.

Suresh.

 
Hi, Salah satu trik yang sangat sederhana untuk skala semua nomor dengan konstan sehingga Anda hanya mendapatkan angka integer.Anda dapat melakukan segala callculations skala dan hasilnya akan diskalakan juga tapi masih dapat dipakai.Dengan cara ini Anda mungkin harus melakukan 16 bit ir 32 ist bith matematika tetapi jauh lebih cepat dan lebih sederhana daripada floating point atau titik yang tetap.

Jadi, dalam contoh anda: Skala semua dengan 100.hasilnya juga skala dengan 100.Ingatlah skala akan dat kalikan dengan 10.000 dan tidak 100 sejak 100 * 100 = 10.000

3,42 5,98 = 9,41 (normal)
343 598 = 941 (skala dengan 100)

 
Hai,
Terima kasih.
Saya menerapkan metode Anda dalam "mul" dan "ADD" instruksi dari 8.051 yang saya gunakan.
Iam mendapatkan hasil tetapi dalam bentuk heksadesimal.Dapatkah saya tahu bagaimana itu bisa diubah ke bentuk desimal atau bentuk BCD?
Karena harus memberikan yang ke tujuh segmen layar.
Aku tak bisa menemukan metode yang cocok untuk mengubah desimal atau Heksadesimal ke BCD.i meskipun melakukan konversi ini untuk mengambil segmen yang setara tujuh nilai dengan menggunakan tabel pencarian.

Berikut adalah contoh untuk menggambarkan:

16,6 * 16,6 = 275,56
Aku di atas seperti ini:
166 * 166 = 27556 (desimal) = 6BA4 (Heksadesimal)

Di sini saya tidak dapat menemukan metode yang cocok untuk menggunakan 6BA4 (Heksadesimal) untuk menampilkan 275,56 dalam tujuh segmen layar.
i bisa mendapatkan cahaya pada masalah ini?

Suresh.

 
Itu tidak begitu sulit dan Anda dapat menemukan banyak dan banyak contoh di internet bagi 8.051 ...
Kode:Notice kanan ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Salin ;;;;; ;;;;;;;;;;;

;; Program ini untuk keperluan pribadi only.You dapat mengubah / memodifikasi ur mengenai persyaratan.

;; Program ini telah diuji dan verfied, tetapi dalam kasus pertanyaan apapun, jangan ragu untuk

;; email (mail_to_salman (at) yahoo.com) saya.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;; Rutin ini adalah untuk 16 bit Hex untuk konversi BCD ;;;;;;;;;;;;;;;;; ;;;;;;;;;

;;;;;;;;;;;;;;;;;; Accepts 16 bit bilangan biner dalam R1, R2 dan kembali 5 digit BCD di R7, R6, R5, R4, R3 (

upto 64K)Hex2BCD:

MOV R1, # 0fFH; MSByte

MOV R2, # 0FFH; LSByteMOV R3, # 00D

MOV R4, # 00D

MOV R5, # 00D

MOV R6, # 00D

MOV R7, # 00DMOV B, # 10D

MOV A, R2

DIV AB

MOV R3, B;

MOV B, # 10; R7, R6, R5, R4, R3

DIV AB

MOV R4, B

MOV R5, A

CJNE R1, # 0H, HIGH_BYTE; PERIKSA UNTUK HIGH BYTE

SJMP ENDDHIGH_BYTE:

MOV A, # 6

ADD A, R3

MOV B, # 10

DIV AB

MOV R3, B

ADD A, # 5

ADD A, R4

MOV B, # 10

DIV AB

MOV R4, B

ADD A, # 2

ADD A, R5

MOV B, # 10

DIV AB

MOV R5, B

CJNE R6, # 00D, ADD_IT

SJMP LANJUTKAN

ADD_IT:

ADD A, R6

LANJUTKAN:

MOV R6, J

DJNZ R1, HIGH_BYTE

MOV B, # 10D

MOV A, R6

DIV AB

MOV R6, B

MOV R7, A

ENDD: SJMP $
 

Welcome to EDABoard.com

Sponsor

Back
Top