Saya ingin menyimpan alamat nomor terbesar di HL tetapi saya tidak begitu tahu bagaimana melakukannya Inilah yang saya lakukan sejauh ini

   0000 LXI H,3000H       ;Load H-L pair with address 3000H
   0001
   0002
   0003 MOV E,M      ;Move counter from memory to reg. E.
   0004 INX H        ;Increment H-L pair
   0005 MOV A,M      ;Move the 1st number from memory to reg. A.
   0006 DCR E        ;Decrement counter.
   0007 INX H        ;Increment H-L pair
   0008 MOV D,M      ;Move the next number from memory to reg. D.
   0009 CMP D        ;Compare D with A.
   000A JNC 000EH    ;Jump to address 000EH if there is no carry
   000B
   000C
   000D MOV A,D      ;Move largest from reg. D to reg. A.
   000E DCR E        ;Decrement counter.
   000F JNZ 0007H    ;Jump to address 0007H if counter is not zero.
   0010
   0011
   0012 INX H        ;Increment H-L pair.
   0013 MOV C,A      ;Move the result from reg. A to C
   0014 HLT


**MEMORY**  
3000H: 05 (counter)
3001H: 2C
3002H: 1E
3003H: 58
3004H: 46
3005H: 53

Kode berfungsi dengan baik di bagian menemukan jumlah maksimum tetapi yang saya inginkan adalah juga menyimpan alamat jumlah maksimum di HL pada akhirnya

1
user1678 23 Desember 2017, 22:50

1 menjawab

Jawaban Terbaik

Saya tidak tahu 8085 dengan baik, jadi saya hanya akan memberikan jawaban umum yang berfungsi untuk mesin register apa pun. (Atau dalam C atau apa pun: ini adalah salah satu pertanyaan di mana jawabannya adalah "sama seperti yang Anda lakukan dalam bahasa lain")

Saat Anda menemukan maksimum baru, salin alamat di suatu tempat serta sebagai nilainya. (Dalam blok instruksi yang sama dengan MOV A,D, yang Anda lompati secara kondisional). Anda masih membutuhkan nilai untuk perbandingan.

Jika 8085 tidak memiliki cukup register, simpan ke memori. Ketika loop Anda selesai, Anda dapat memuat ulang HL dari sana jika / saat Anda mau. Dari meninggalkan nilai dalam memori sebagai hasil dari fungsi Anda.

Pastikan Anda memasukkan nilai awal dan alamat ke elemen pertama, jika itu maks. Tidak seperti pencarian nilai-saja, Anda tidak bisa hanya menggunakan nilai minimum yang mungkin sebagai penginisialisasi untuk maks.

1
Peter Cordes 24 Desember 2017, 17:00