|
Assemblerda matematik amallarni bajarish Faxriddinov Diyorbek Farrux o`g`li
|
bet | 3/4 | Sana | 18.05.2024 | Hajmi | 115,12 Kb. | | #242864 |
Bog'liq Amaliy
Quyida assembler tilida matematik amallarni bajarish va massivlar bilan ishlashga oid namunaviy dastur keltirilgan:
section .data
array db 10, 20, 30, 40, 50 ; massivni aniqlash
section .bss
result_add resb 1 ; qo‘shish natijasi uchun joy
result_sub resb 1 ; ayirish natijasi uchun joy
result_mul resb 1 ; ko‘paytirish natijasi uchun joy
result_div resb 1 ; bo‘lish natijasi uchun joy
result_mod resb 1 ; bo‘lish qoldig‘i uchun joy
section .text
global _start
_start:
; Massivdagi birinchi elementni ikkinchi elementga qo‘shish (ADD)
mov al, [array] ; al registriga birinchi elementni yuklash
add al, [array + 1] ; ikkinchi elementni qo‘shish
mov [result_add], al ; natijani result_add ga saqlash
; Massivdagi uchinchi elementni to‘rtinchi elementdan ayirish (SUB)
mov al, [array + 2] ; al registriga uchinchi elementni yuklash
sub al, [array + 3] ; to‘rtinchi elementni ayirish
mov [result_sub], al ; natijani result_sub ga saqlash
; Massivdagi birinchi elementni beshinchi elementga ko‘paytirish (MUL)
mov al, [array] ; al registriga birinchi elementni yuklash
mov bl, [array + 4] ; bl registriga beshinchi elementni yuklash
mul bl ; al = al * bl
mov [result_mul], al ; natijani result_mul ga saqlash
; Massivdagi to‘rtinchi elementni ikkinchi elementga bo‘lish (DIV)
mov ax, [array + 3] ; ax registriga to‘rtinchi elementni yuklash (bo‘lish uchun ax registr ishlatiladi)
mov bl, [array + 1] ; bl registriga ikkinchi elementni yuklash
div bl ; ax = ax / bl
mov [result_div], al ; bo‘lish natijasini result_div ga saqlash
mov [result_mod], ah ; bo‘lish qoldig‘ini result_mod ga saqlash (qoldiq ah registrida saqlanadi)
; Dasturdan chiqish
mov eax, 1 ; exit system call
int 0x80
Dastur natijasi:
[Execution complete with exit code -11]
|
| |