я читал пример на ассемблере, и у меня есть небольшие сомнения. Мы использовали ассемблер только в наших программах, но последний модуль в семестре - это объединить его с turbo c (поточный ассемблер), и, читая код, есть часть, которую я не совсем понимаю: вот сборка часть:
dosseg
.model small
.code
public _myputchar
_myputchar PROC
push bp
mov bp,sp
mov dl,[bp+4]
mov ah,2
int 21h
pop bp
ret
_myputchar ENDP
END
И вот часть C:
#include<stdio.h>
extern void myputchar( char x );
char *str={"Hola Mundo\n"};
void main ( void )
{
while(*str)
myputchar(*str++);
getchar();
}
Итак, все довольно просто, и программа работает, но чего я не понимаю, так это ассемблерного кода. Проблема в том, почему базовый указатель (bp) указывает на +4? (mov dl,[bp+4]), я бы подумал, что вам нужно было только mov dl,bp, но я не понимаю, почему +4. Если кто-то может нам помочь, мы будем очень признательны! (в разделе включения я поставил "" Потому что инструменты форматирования дают мне такую головную боль -_-!