Александр Зыбин
Александр Зыбин

Помогите закоментировать программу Ассемблер Tasm

.model small
.stack 512
.data
str1 DB '1sdhe5qyu56udfyhryh57iytdgw5u7356j7yfdh',0h
str2 DB 'yfd',0h ;строка для поиска
addr DW outbyte1
addr1 DW outbyte1
n1 DW ? ; Длина строки S1
n2 DW ? ; Длина строки S2
msg4 db ' simvola$'
MsgF DB 'Stroka naidena s $'
MsgNF DB 'Stroka ne naidena $'
OutArr DB 3 dup (?) ; временный массив - буфер вывода
assume cs:_DATA

outbyte1 proc
push bp ;Входная последовательность-сохранение старого BP
mov bp,sp;Установка указателя на запись активации
push ax
push dx
push cx
push bx
push si

mov si,0

xor ax,ax;очистка акомулятора
mov al,[bp+6]

push ax
loop_div:
pop ax
mov ch,10
div ch;деление без остатка
xor cx,cx
mov cl,al
push cx

mov dl,ah
add dl,48
mov OutArr[si],dl
inc si;прибавляет 1 к байту млм слову

cmp cx,0;сравнение
jne loop_div
pop cx

mov cx,si
dec si;вычитает 1 из байта или слова
outarray:
xor ax,ax
xor dx,dx
mov dl,OutArr[si]
dec si
mov ah,2
int 21h
loop outarray

pop si;Выходная последовательность-востановление старого si
pop bx
pop cx
pop dx
pop ax
pop bp
retf 2

outbyte1 endp

.code
m1:mov ax,@DATA ; Установка регистра DS на сегмент данных
mov ds,ax
mov es,ax
mov ah,0 ;уст. видео режим. Очистить экран
mov al,2 ;текст, формат окна 80x25
int 10h ;видео сервис

; Определение длины строки S1

lea di, str1
cld
mov cx,256
mov al,0h
repne scasb
mov ax,256
sub ax,cx
dec ax
mov n1,ax

; Определение длины строки S2

lea di, str2
cld
mov cx,256
mov al,00h
repne scasb
mov ax,256
sub ax,cx
dec ax
mov n2,ax

; Инициализация

mov si,0
mov di,0
mov bx,0

mov ax,n1
sub ax,n2
inc ax

cikl:
cmp bx,[n1]
jnz nextiter
jmp NOTfounded

; Символы равны

nextiter:
mov cx,n2
lea di,str1
lea si,str2
add di,bx
inc bx
repe cmpsb
jne cikl
jmp founded

founded:
mov ah,09h
lea dx,MsgF
int 21h

; первод номера позиции в стороку и вывод на экран

;mov ah,bl
int 3
mov addr,offset(outbyte1)
mov addr1,@DATA
push bx
mov bx, offset(addr)
call dword ptr [bx]

mov ah,09h ; помещаем в al 09h - при 21 прирывании будет выведено сообщение
mov dx,offset(msg4) ;загружаем в dx адрес ASCII строки символов заканчивающихся '$'
int 21h

jmp mainend

NOTfounded:
mov ah,09h
lea dx,MsgNF
int 21h

mainend:
mov ax,4C00h
int 21h

end m1

Ко
Конфеточка

>>Помогите закоментировать программу

Закомментировал программу.

; model small
; .stack 512
; .Data
; str1 DB '1sdhe5qyu56udfyhryh57iytdgw5u7356j7yfdh',0h
; str2 DB 'yfd',0h ;строка для поиска
; addr DW outbyte1
; addr1 DW outbyte1
; n1 DW ? ; Длина строки S1
; n2 DW ? ; Длина строки S2
; msg4 db ' simvola$'
; MsgF DB 'Stroka naidena s $'
; MsgNF DB 'Stroka ne naidena $'
; OutArr DB 3 dup (?) ; временный массив - буфер вывода
; assume cs:_DATA
;
; outbyte1 proc
; push bp ;Входная последовательность-сохранение старого BP
; mov bp,sp ;Установка указателя на запись активации
; push ax
; push dx
; push cx
; push bx
; push si
;
; mov si,0
;
; XOr ax,ax ;очистка акомулятора
; mov al,[bp+6]
;
; push ax
; loop_div:
; pop ax
; mov ch,10
; div ch ;деление без остатка
; XOr cx,cx
; mov cl,al
; push cx
;
; mov dl,ah
; add dl,48
; mov OutArr[si],dl
; inc si ;прибавляет 1 к байту млм слову
;
; cmp cx,0 ;сравнение
; jne loop_div
; pop cx
;
; mov cx,si
; dec si ;вычитает 1 из байта или слова
; outarray:
; XOr ax,ax
; XOr dx,dx
; mov dl,OutArr[si]
; dec si
; mov ah,2
; int 21h
; loop outarray
;
; pop si ;Выходная последовательность-востановление старого si
; pop bx
; pop cx
; pop dx
; pop ax
; pop bp
; retf 2
;
; outbyte1 endp
;
; .code
; m1: mov ax,@DATA ; Установка регистра DS на сегмент данных
; mov ds,ax
; mov es,ax
; mov ah,0 ;уст. видео режим. Очистить экран
; mov al,2 ;текст, формат окна 80x25
; int 10h ;видео сервис
;
; ; Определение длины строки S1
;
; lea di, str1
; cld
; mov cx,256
; mov al,0h
; repne scasb
; mov ax,256
; sub ax,cx
; dec ax
; mov n1,ax
;
; ; Определение длины строки S2
;
; lea di, str2
; cld
; mov cx,256
; mov al,00h
; repne scasb
; mov ax,256
; sub ax,cx
; dec ax
; mov n2,ax
;
; ; Инициализация
;
; mov si,0
; mov di,0
; mov bx,0
;
; mov ax,n1
; sub ax,n2
; inc ax
;
; cikl:
; cmp bx,[n1]
; jnz nextiter
; jmp NOTfounded
;
; ; Символы равны
;
; nextiter:
; mov cx,n2
; lea di,str1
; lea si,str2
; add di,bx
; inc bx
; repe cmpsb
; jne cikl
; jmp founded
;
; founded:
; mov ah,09h
; lea dx,MsgF
; int 21h
;
; ; первод номера позиции в стороку и вывод на экран
;
; ;mov ah,bl
; int 3
; mov addr,offset(outbyte1)
; mov addr1,@DATA
; push bx
; mov bx, offset(addr)
; call dword ptr [bx]
;
; mov ah,09h ; помещаем в al 09h - при 21 прирывании будет выведено сообщение
; mov dx,offset(msg4) ;загружаем в dx адрес ASCII строки символов заканчивающихся '$'
; int 21h
;
; jmp mainend
;
; NOTfounded:
; mov ah,09h
; lea dx,MsgNF
; int 21h
;
; mainend:
; mov ax,4C00h
; int 21h
;
; End m1

ТА
Татьяна Архипцева

и что это нет коментария изначально а где точка входа

Похожие вопросы
Есть HelloWorld на Ассемблере (TASM). Объясните, пжл, смысл всех этих строк)
Bonpoc no TASM (BHyTpu) турбо ассемблер. Ребятушки, какой TASM лучше для Windows 7? TASM 4.1 покатит ?
Лабораторная работа по Ассемблеру (TASM), помогите пожалуйста)
Помогите с лабораторной на TASM
помогите написать программу в с++ или на ассемблере
Помогите написать программу на языке ассемблера!!!!
Помогите откомментировать программу на ассемблере....
помогите написать программы в ассемблере
не могли бы вы обьяснить как работает программа для подсчёта суммы положительных элементов массива. Ассемблер TASM
Помогите с программой на TASM