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

Определить номер заданного байта. Ассемблер, tasm

15.04.2014, 21:41. Показов 1269. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можете исправить ошибки, чтобы определял номер заданного байта?
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
.model small
.data
fname db 'hello.txt',0 
Flen dw  ?  
buf    db 2 dup (?) 
handle    dw ?       
.code
start: 
  mov ax,@data 
  mov ds, ax 
mov es,ax
  mov ah,3dh 
  mov al,01 
  lea dx, fname 
  int 21h 
mov handle, ax 
mov AH, 42h 
mov BX,handle
mov AL, 2 
mov CX, 00 
mov DX, 00 
int 21h
  mov Flen, AX 
  mov AH, 42h
  mov BX, handle
  mov AL, 00 
  mov CX, 00
  mov DX, 00 
int 21h
  mov bx,ax       
  mov ah, 3fh
  mov bx, handle
  lea dx, BUF
  mov cx, 80
  int 21h    
cld 
mov CX, Flen 
mov AL, 'a' 
lea DI, buf
repne scasb 
jnz m
dec DI 
m:  xor     cx, cx
    mov     bx, 10 
d:  
xor     dx,dx
    div     bx
    push    dx
    inc     cx
    test    ax, ax
    jnz     m
    mov     ah, 02h 
b:   pop     dx
    add     dl, '0'
    int     21h
    loop    b 
close_file: 
  mov ah, 3eh 
  mov bx, handle
  int 21h 
mov ah,0                
int 16h 
mov ax,4c00h
int 21h                 
  end start
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2014, 21:41
Ответы с готовыми решениями:

Замена в файле нужного байта. Ассемблер, tasm
Как поменять в файле 10 байт? Программа выводит 10 байт, но не заменяет его .model small org 100h...

Определить количество вхождений в файл заданного байта
Добрый день. Не могу сделать с помощью модулей os и sys. Программа получает входные данные через...

Программа, определяющая для заданного целочисленного объекта определить количество ведущих единиц старшего его байта
Здравствуйте, помогите, пожалуйста, выполнить задачу. Нужна программа, позволяющая для заданного...

Сложение двух unsigned int длиной в 4 байта (ассемблер 8086)
Здравствуйте ! Застрял на одном вроде бы элементарном вопросе - требуется сложить два 32-битных...

1
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
16.04.2014, 13:00 2
Лучший ответ Сообщение было отмечено 123rustem45 как решение

Решение

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
.model small
.data
fname db 'hello.txt',0 
;Flen dw  ?  
buf    db 2 dup (?) 
handle    dw ?       
.code
start: 
  mov ax,@data 
  mov ds, ax 
mov es,ax
  mov ah,3dh 
  mov al,0;01 
  lea dx, fname 
  int 21h 
mov handle, ax 
;mov AH, 42h 
;mov BX,handle
;mov AL, 2 
;mov CX, 00 
;mov DX, 00 
;int 21h
;  mov Flen, AX 
;  mov AH, 42h
;  mov BX, handle
;  mov AL, 00 
;  mov CX, 00
;  mov DX, 00 
;int 21h
;  mov bx,ax       
  mov ah, 3fh
  mov bx, handle
  lea dx, BUF
  mov cx, 80
  int 21h    
cld 
;mov CX, Flen 
mov bx,ax
mov cx,ax
mov AL, 'a' 
lea DI, buf
repne scasb 
jnz m
;dec DI
sub bx,cx
mov ax,bx
;m:
  
xor     cx, cx
    mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     dx,dx
    div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    dx
    inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    ax, ax
    jnz     oi2
; Теперь приступим к выводу.
    mov     ah, 02h
oi3:
    pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
    add     dl, '0'
    int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
 
;close_file: 
m:
  mov ah, 3eh 
  mov bx, handle
  int 21h 
mov ah,0                
int 16h 
mov ax,4c00h
int 21h                 
  end start
1
16.04.2014, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2014, 13:00
Помогаю со студенческими работами здесь

Ассемблер(TASM) переименовать файл
Добрый день уважаемые программисты. Остался последний шаг и программа будет полностью рабочей....

Сигнал спикером через ассемблер TASM
Здравствуйте дорогие форумчане! Не могли бы вы, пожалуйста, выложить сюда программу, которая...

Пересылка массива слов. Ассемблер, tasm
Изменить данную программу в программу для пересылки массива слов. sseg segment db 128 dup(?)...

Ввод строки с клавиатуры. Ассемблер, tasm
Ввод строки с клавиатуры функции 3fh, 21 прерывания. Что нужно изменить в данной программе, чтобы...


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

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