Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14

Разработать программу, работающую с файлами, используя описатели

17.06.2012, 16:30. Показов 1163. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подсчитать количество цифр в файле и вывести на экран результат в шестнадцатеричной форме. Имя файла задается пользователем, если файл с указанным именем не существует, то выдать соответствующее сообщение.

Работа с файлами:
Assembler
1
2
3
4
5
6
7
8
9
data segment
  msgVvod db 10,13,'Enter filename: $' 
  msgNeOtkr db 10,13,'Do you want to create file (y/n): $'
  msgOtkr db 10,13,'The file is opened$'
  msgError db 10,13,'Read error$'
  filename db 20,00,20 dup(?)
  buf db 50,00,50 dup('$')
  ansver_yn db 2,0,?
data ends
Перевод в 16-ую форму:

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
66
67
68
69
code segment 
  assume cs:code,ss:stk,ds:data
  ; процедура перевода в 16-ую систему счисления
  proc16 proc
    mov bl,dh
    mov cl,4
    shr bl,cl
    and bl,00001111b
    xor bh,bh
    mov dl,tab[bx]
    mov ah,2h
    int 21h
    mov bl,dh
    and bl,00001111b
    xor bh,bh
    mov dl,tab[bx]
    mov ah,2h
    int 21h
    ret
  proc16 endp
 
start:
  mov bx,data
  mov ds,bx
  mov ah,9h
  mov dx,offset msg
  int 21h
  mov ah,0ah
  mov dx,offset buf
  int 21h
  mov ah,9h
  mov dx,offset mes
  int 21h       
 
; преобразование введенной строки символов в число
  mov di,0
  lea bx,buf+1  ;в bx адрес второго элемента буфера
  mov cx,[bx]       ;в cx количество введенных символов
  xor ch,ch
  mov si,1      ;в si множитель 
met:    
  push si       ;сохраняем si (множитель) в стеке
  mov si,cx     ;в si помещаем номер текущего символа 
  mov ax,[bx+si]    ;в ax помещаем текущий символ     
  xor ah,ah
  pop si        ;извлекаем множитель (si)из стека
  sub ax,30h        ;получаем из символа (ax) цифру
  mul si        ;умножаем цифру (ax)на множитель (si)
  add di,ax     ;складываем с результирующим числом
  mov ax,si     ;помещаем множитель (si) в ax
  mov dx,10 
  mul dx        ;увеличиваем множитель (ax) в 10 раз
  mov si,ax     ;перемещаем множитель (ax) назад в si
loop met        ;переходим к предыдущему символу
 
; перевод в 16-ую систему счисления
  mov dx,di
  call proc16
  mov dx,di
  xchg dh,dl
  call proc16
  mov ah,2h
  mov dl,'h'
  int 21h
  mov ah,9h
  mov dx,offset mes 
  int 21h       
code ends
end start
Все ли верно? И что нужно еще добавить, чтобы прога работала?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.06.2012, 16:30
Ответы с готовыми решениями:

Написать программу, работающую с файлами
люди, помогите написать программу на файлы. я с++ недавно изучать начал, с файлами еще не разобрался, а задание уже задали..(( завтра уже...

Подпрограммы. Работа с файлами через описатели
Разработать программу вывода строковых данных в файл. Строка вводится с клавиатуры, во введенной строке 1. строчные символы «а» заменить на...

Перевести программу, работающую с txt в программу, работающую с bin
доброго времени суток. я написал программу работающую с файлами txt первая берет данные с файла в котором содержаться данные о бегунах, и...

4
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
18.06.2012, 18:25
Цитата Сообщение от Ёвочка Посмотреть сообщение
Все ли верно? И что нужно еще добавить, чтобы прога работала?
Здесь просто куски ассемблерного кода.
Надо исправить эту программу или написать свою с использованием кода этой программы?
0
 Аватар для Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
18.06.2012, 19:32  [ТС]
Все верно, здесь куски, думаю их можно использовать.
Но можно и по другому, главное сама программа.
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
19.06.2012, 10:55
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
;TASM, COM - файл
;tasm.exe /m
;tlink.exe /t /x
;
.model tiny
.code
.386
org 100h
start:
    mov ah,9
    lea dx,EnterFilename
    int 21h
 
    mov ah,0Ah
    lea dx,Filename
    int 21h
 
    push dx
    pop di
 
    inc di
    xor bx,bx
    mov bl,[di]
    inc di
    mov byte ptr [di+bx],0
 
    mov ax,3D00h        ;Откроем файл
    mov dx,di
    int 21h
    jc short NotFound   ;При ошибке - на выход..
    mov [ID],ax
    mov bx,ax
 
    mov ah,3Fh      ;читать из файла
    lea dx,Buf
    mov cx,0FA00h
    int 21h
 
    mov cx,ax
    mov si,dx
    xor bx,bx
m1:
    lodsb           ;читать первый символ
push cx
    mov cx,10
    lea di,tab
    repne scasb     ;цифра или все остальное?
    jnz short no    ;если не цифра
    inc bx          ;иначе увеличить счетчик
no:
pop cx
    loop m1
 
    mov ah,9
    lea dx,Rezult
    int 21h
;Преобразовать и вывести на экран
    mov cx,2
    mov al,bh
m_c10:
    xor ah,ah
    shl ax,4
    shr al,4
    xchg al,ah
    cmp al,10
    sbb al,69h
    das
    mov dl,al
push ax
    mov ah,2
    int 21h
pop ax
    mov al,ah
    cmp al,10
    sbb al,69h
    das
    mov dl,al
    mov ah,2
    int 21h
    mov al,bl
    loop m_c10
 
    mov ah,2
    mov dl,'h'
    int 21h
 
    mov ah,3Eh      ;закрыть файл
    mov bx,[ID]
    int 21h
 
    jmp short exit
 
NotFound:
    mov ah,9
    lea dx,StrNotFound
    int 21h
exit:
    mov ah,0
    int 16h
 
    ret
 
EnterFilename db 10,13,'Enter file name: $'
StrNotFound   db 10,13,'File not found!$'
Rezult        db 10,13,'Number of digital file: $'
Tab           db '0123456789'
Filename      db 13,?,11 dup (?)
ID            dw ?
Buf:
 
    end start
0
 Аватар для Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
19.06.2012, 14:28  [ТС]
огромное спасибо=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2012, 14:28
Помогаю со студенческими работами здесь

Разработать программу для работы с типизированными файлами
Составить текст программы, позволяющей: – вводить с клавиатуры данные о товарах на складе (название товара, цена, поступило, продано,...

Разработать графическую систему, работающую в двух режимах
Что требуется: Разработать графическую систему, работающую в режимах: статический: на однотонном фоне рисуется объект. Пользователь может...

Разработать программу для работы с файлами (чтение, запись).
Разработать программу для работы с файлами (чтение, запись). В верхнем поле (textFieldControl1) вводится каталог, например C:\, после...

Разработать программу, содержащую 2 функции для работы с текстовыми файлами
1)Задать имя файла: ввод с клавиатуры; строковая константа в программе. 2)Вариант цепочки операций над данными: ввод с клавиатуры и...

Разработать игровую программу используя множества
Используя множества разработать игровую программу. В ее основу положить следующее правило игры. В игре участвуют два человека. Первый...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru