Вызов подпрограммы для C - Assembler

Узнай цену своей работы

Формулировка задачи:

Возник вопрос ! Как вызвать код как подпрограмму на Си.
.386
.model flat, stdcall
option casemap :none
include kernel32.inc
includelib kernel32.lib
.data
    a db 9, 6, 9, 2, 3,
         8, 3, 8, 3, 2,
         7, 3, 7, 7, 7,
         6, 6, 3, 6, 6  
  row db 4
  col db 5
  max db ?
.code
    main PROC
    xor ebx,ebx
    xor ecx,ecx
    xor edx,edx
 
    movsx ecx,row        ; ecx = row
 
    forkrow:             ; for(i=5; i>0; i--)
    push ecx             ; mem ecx
    movsx ecx,col        ; ecx = col
    sub ecx,1            ; ecx = col - 1
    mov al, a[edx][ecx]  ; al = a[edx][ecx]
 
    forkcol:             ; for(i=4; i>0; i--)
    mov ah, a[edx][ecx-1]   ; ah = a[edx][ecx-1]
    cmp ah,al            ; al>ah
 
    jge @EndMin          ; else
    mov al,ah            ; al = ah
    
    @EndMin:
    loop forkcol
    cmp edx,0           ; один проход
    jz @EndTemp         ; для того чтоб
    mov bl,al           ; bl присвоить
    
    @EndTemp:           ; один из минимумов
    cmp bl,al           ; bl < al
    jl @EndMax          ; else

    @EndMax:
    mov bl,al           ; bl = al
    add edx,5    ; edx+=5
    pop ecx
    
    loop forkrow
    mov max,bl   ; MAX
 
invoke ExitProcess, 0
main endp
end main
Спасибо большое за помощь.

Решение задачи: «Вызов подпрограммы для C»

textual
Листинг программы
public  maxi
maxi    proc C, arr:DWORD, row:BYTE, col:BYTE

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы