Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Программа находит минимальный и максимальный символ в строке
- * Минимальный и максимальный символ хранятся в глобальных переменных _MIN и _MAX
- * Строка передается как параметр в функцию
- */
- /******** MAIN.CPP ********/
- # include "stdlib.h"
- // Объявляем функцию, с двумя параметрами - указатель на строку и кол-во символов
- extern "C" void __fastcall FUNC(int string_ptr, int count);
- // Глобальные переменные
- extern "C" int MIN = 2147483647;
- extern "C" int MAX = 0;
- int main() {
- char str[] = { "asdasdad" }; // Строка
- int string_ptr = (int)&str;
- FUNC(string_ptr, 8);
- printf("MIN = %d MAX = %d\n", MIN, MAX);
- return 0;
- }
- /******** FUNT.ASM ********/
- .386
- .MODEL FLAT;
- ; Глобальные переменны
- EXTERN _MIN: DWORD
- EXTERN _MAX: DWORD
- .CODE
- ; FASTCALL
- ; В ECX адрес строки
- ; В EDX кол-во символов
- @FUNC@8 PROC
- mov ESI, ECX
- @ReadNextSymbol:
- XOR EBX, EBX
- MOV BL, [ESI] ; Перемещаем символ в строке в регистр BL
- INC ESI ;
- CMP EBX, _MAX ;
- JL @IfNot ; Сверяем символ с максимальным
- MOV _MAX, EBX ; Если он меньше - то НЕ изменяем максимальный символ
- @IfNot: ;
- CMP EBX, _MIN ;
- JG @IfNot2 ; Сверяем символ с минимальным
- MOV _MIN, EBX ; Если он меньше - то НЕ изменяем минимальный символ
- @IfNot2: ;
- DEC EDX
- CMP EDX, 0
- JG @ReadNextSymbol ;
- RET
- @FUNC@8 ENDP
- END
Advertisement