Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
1

Изменить код программы для Far-manager

22.05.2014, 10:46. Показов 1026. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использование системных и C-функций ввода-вывода символов и строк. Помогите правильно изменить код. В программе должны использоваться 3 функций: putc fread WriteFile.
Попробовала написать код, но он соответственно не работает.Помогите его исправить,пожалуйста.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.686              
    .MODEL  FLAT,C
    INCLUDE in_out.inc
 
    .STACK
 
    .DATA
Message BYTE    "Vvedite stroku:",0
stdout  DWORD   ?
    
    .CODE
main    PROC    
 
;get stdout
    INVOKE  __iob_func  ;get stdout
    add eax,32      ;get stdout
    mov stdout,eax  ;get stdout
;get length
    INVOKE  strlen,ADDR Message 
    mov ecx,eax
;make base
    mov ebx,OFFSET Message
;repeating ecx times
loop1:
        mov al,[ebx]    ;get current character                                                      
    cbw         ;expanded to word
    push    ecx     ;save counter
    INVOKE  putc,ax,stdout  ;print current character
    inc ebx     ;to next character
    pop ecx     ;restore counter
    loop    loop1       ;to next character printing
 
 
Message BYTE    "Vvedena stroka:"
Text2   BYTE    NN DUP (?)
n   DWORD   0
     .CODE
main    PROC    
 
;get stdin
    INVOKE  __iob_func  ; get stdin
    INVOKE  _fileno,eax ; get handle of stdin
;input
    INVOKE  _read,eax,ADDR Text2,NN
    mov Text2[eax-1],
    mov Text2[eax],0
;get length
    INVOKE  strlen,ADDR Message
    mov n,eax
;get stdout OS_handle
    INVOKE  GetStdHandle,STD_OUTPUT_HANDLE
;output
    INVOKE  WriteFile,eax,ADDR Message,n,ADDR n,0
       
main    ENDP 
 
    END ;program
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2014, 10:46
Ответы с готовыми решениями:

Изменить код, чтобы в начале программы выводился запрос для ввода размера стека
Нужно изменить пример так, чтобы в начале работы программы выводился запрос для ввода размера...

Изменить код программы
Всем доброго времени суток, помогите отформатировать код, необходимо заменить cin.ignore и cin.get...

Изменить код программы
Переписать под процедуры ------------------------------------------------------------------...

Изменить код программы
#include "stdafx.h" #include "stdio.h" #include "conio.h" int main() { int const N = 10; ...

2
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
22.05.2014, 10:50 2
jinkaru,
  1. для оформления программ используй тэги [аsm] и [/аsm]
  2. нажми на "Расширенный режим", затем на "скрепку" и прикрепи к своему сообщению файл "in_out.inc"
Assembler
1
2
3
.686 
.MODEL  FLAT,C
INCLUDE in_out.inc <-- вот это!
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
22.05.2014, 22:48  [ТС] 3
in_out.inc
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
@t_0        TYPEDEF     PTR SBYTE
@t_1        TYPEDEF     PTR SBYTE
@t_2        TYPEDEF     PTR SBYTE
 
_iobuf      STRUCT  2t
  _ptr      @t_0        ?
  _cnt      SWORD       ?
  _base     @t_1        ?
  _flag     SWORD       ?
  _file     SWORD       ?
  _charbuf  SWORD       ?
  _bufsiz   SWORD       ?
  _tmpfname @t_2        ?
 _iobuf     ENDS
 
FILE        TYPEDEF     _iobuf
 
STD_INPUT_HANDLE    EQU DWORD PTR -10
STD_OUTPUT_HANDLE   EQU DWORD PTR -11
STD_ERROR_HANDLE    EQU DWORD PTR -12
 
puts        PROTO       C :PTR SBYTE
gets        PROTO       C :PTR SBYTE
putc        PROTO       C :WORD, :PTR FILE
 
@proto_19       TYPEDEF     PROTO C :SWORD
_fputchar       PROTO       @proto_19
 
printf      PROTO       C :PTR SBYTE, :VARARG
fprintf     PROTO       C :PTR FILE, :PTR SBYTE, :VARARG
;int _cprintf_s(const char * format [,  argument] ... );
_cprintf_s  PROTO       C :PTR SBYTE, :VARARG
 
;FILE *_fdopen(int handle, const char *mode);
_fdopen     PROTO       C :DWORD, :PTR SBYTE
 
;int _fileno(FILE *stream);
_fileno     PROTO       C :PTR FILE
 
__iob_func  PROTO       ; (void)
 
;size_t strlen(const char *str);
strlen      PROTO       C :DWORD
 
;int _read(int fd, void *buffer, unsigned int count);
_read       PROTO       C fd:DWORD, buffer:PTR SBYTE, count:DWORD
 
;int fgetc(FILE *stream);
fgetc       PROTO       C :PTR FILE
 
 
 
;HANDLE GetStdHandle(DWORD nStdHandle);
GetStdHandle    PROTO       STDCALL, :DWORD
 
;BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
;           1       2       3           4               5
WriteFile   PROTO       STDCALL hFile:DWORD, lpBuffer:DWORD, nNumberOfBytesToWrite:DWORD, lpNumberOfBytesWritten:DWORD, lpOverlapped:DWORD
;BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped);
ReadFile    PROTO       STDCALL hFile:DWORD, lpBuffer:DWORD, nNumberOfBytesToWrite:DWORD, lpNumberOfBytesWritten:DWORD, lpOverlapped:DWORD
ReadConsoleA        PROTO           STDCALL hFile:DWORD, lpBuffer:DWORD, nNumberOfBytesToWrite:DWORD, lpNumberOfBytesWritten:DWORD, lpOverlapped:DWORD
 
MessageBoxA PROTO       STDCALL :PTR BYTE, :PTR BYTE, :PTR BYTE, :DWORD
CharToOemA  PROTO       STDCALL :DWORD, :DWORD
OemToCharA  PROTO       STDCALL :DWORD, :DWORD
0
22.05.2014, 22:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2014, 22:48
Помогаю со студенческими работами здесь

Изменить код программы
Помогите отредактировать public class PrintNumber { public static void main(String args) {...

Изменить код программы
Здравствуйте ! Было задание на вывод записей текстового файла с числом страниц больше указанного,...

Изменить код программы
Изучаю ассемблер, создаю программу в Visual Studio, пишу тестовую программу с таким кодом:#include...

Изменить код программы
В данной программе нужно добавить: (1) процедуру с параметром, где пользователю дается возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru