Untitled
unknown
plain_text
a year ago
2.0 kB
7
Indexable
#include <stdio.h> void convert_numbers_to_string(int* numbers, int size) { char output[100] = {0}; // laikina eilutė rezultatams char sum = 0; int zero_flag = 0; __asm { xor ecx, ecx // Nustatome ciklo skaitiklį xor ebx, ebx // EBX naudojame kaip rodyklę į masyvo elementą lea ebx, numbers // Įkeliame masyvo pradžios adresą į EBX loop_start: cmp ecx, size // Tikriname, ar pabaigėme peržiūrėti visus elementus jge loop_end mov edx, [ebx + ecx*4] // Įkeliamas dabartinis skaičius iš masyvo cmp edx, 10 // Ar skaičius yra vienženklis? jge too_large // Jei ne, vykdomas pertraukimas cmp edx, 0 // Ar skaičius yra 0? je has_zero // Jei taip, praleidžiame šį žingsnį add sum, dl // Pridedame skaičių prie sumos jc sum_overflow // Tikriname ar neviršytas 8 bitų limitas add dl, '0' // Konvertuojame skaičių į ASCII simbolį mov [output + ecx], dl // Įrašome simbolį į rezultatų eilutę jmp next_element has_zero: mov zero_flag, 1 // Nustatome, kad buvo rastas 0 next_element: inc ecx // Padidiname ciklo skaitiklį jmp loop_start // Grįžtame į ciklo pradžią too_large: mov output, "skaiciu masyve yra ne vienazenklis skaicius" jmp loop_end sum_overflow: mov output, "skaiciu suma virsija 8 bitu talpa" loop_end: } printf("%s\n", output); if (zero_flag) { printf("skaiciu masyve buvo 0\n"); } } int main() { int numbers[] = {4, 8, 7, 6, 1}; int size = sizeof(numbers) / sizeof(numbers[0]); convert_numbers_to_string(numbers, size); return 0; }
Editor is loading...
Leave a Comment