Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Hard&Soft > Программирование
Справка Пользователи Календарь Сообщения за день
 
 
Опции темы Опции просмотра
Prev Предыдущее сообщение   Следующее сообщение Next
Старый 23.06.2006, 13:44   #1
Malenya
Новичок
 
Аватар для Malenya
 
Регистрация: 26.04.2006
Сообщений: 10
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Может кто подскажет

У меня возникла такая проблема, мне прислали незачет по трем программам, а в рецензии не написали почему. Можек кто свежим взглядом посмотрит и подскажет что не так в листинге программ.
1.comment #

assume cs:code
code segment public 'code'
org 100h

; ----------------------------------------------------------------------------
; Основная процедура
; ----------------------------------------------------------------------------
main proc near

; освобождаем память. надо то всего немного

mov bh,10h
mov ah,4ah
int 21h

; начало цикла и вывод сообщения о вводе имени
floop: mov ah,9
lea dx,fnter
int 21h

; ввод имени файла
mov ah,0ah
mov dx,offset bfile
int 21h

; если длина введеного имени 0, то выход
cmp cs:lfile,0
jz exit


push ds
push es
mov word ptr csld_ss,ss
mov word ptr csld_sp,sp
lea si,lfile
int 2eh
mov ss,csld_ss
mov sp,csld_sp
pop es
pop ds

mov ah,9
lea dx,fdone
int 21h

; заворачиваем на начало цикла
jmp floop

; выход
exit: mov ax,4c00h
int 21h

; переменные
bfile db 81
lfile db 0
nfile db 81 dup (0)
blocp db 14 dup (0)
old_ss dw ?
old_sp dw ?
fnter db 'Enter the name file (*.bat):', 0ah, 0dh, 24h
fdone db 'All done..', 0ah, 0dh, 24h

main endp
code ends
end main

2.
code segment public
assume cs:code

; обьявление процедур
public set_init, set_simbol, set_msg, set_cursor

; ----------------------------------------------------------------------------
; Процедура инициализации
; в bh установка цвета фона
; в bl установка цвета символов
; ----------------------------------------------------------------------------
set_init proc

push ax bx cx dx

jmp start_init
atribut db 0
position dw 0
start_init:

cmp bh,7
ja init_error
cmp bl,7
ja init_error

shl bh,4
add bl,bh
xor bl,00001000b
mov atribut,bl

mov al,3
int 10h
call set_cl
mov position,0

init_error:
pop dx cx bx ax
ret

set_init endp

; ----------------------------------------------------------------------------
; Процедура очистки экрана
; ----------------------------------------------------------------------------
set_cl proc

mov ax,0b800h
mov es,ax

mov cx,2000
mov bx,1
mov al,atribut
attr: mov es:[bx],al
inc bx
inc bx
loop attr
mov cx,2000
xor bx,bx
mov al,32
asc: mov es:[bx],al
inc bx
inc bx
loop asc

ret

set_cl endp

; ----------------------------------------------------------------------------
; Процедура вывода символа
; Входные данные al - символ
; ----------------------------------------------------------------------------
set_simbol proc

push ax bx cx dx

push 0b800h
pop es

cmp al,24h
je set_simbol_24

cmp al,0ah
je set_simbol_0a

cmp al,0dh
je set_simbol_0d

jmp set_simbol_next

set_simbol_0a:
add position,160
jmp set_simbol_ret

set_simbol_24:
stc
jmp set_simbol_ret

set_simbol_0d:
push ax bx dx
xor dx,dx
mov ax,position
mov bx,80
div bx
xor ah,ah
mul bx
mov position,ax
pop dx bx ax
jmp set_simbol_ret

set_simbol_next:
mov bx,position
mov es:[bx],al
inc position
inc position

set_simbol_ret:
pop dx cx bx ax
ret

set_simbol endp
; ----------------------------------------------------------------------------
; Процедура вывода строки
; Входные данные bx - смещение текста
; ----------------------------------------------------------------------------
set_msg proc

@msg: mov al,[bx]
call set_simbol
jc @mret
inc bx
jmp @msg
@mret: ret

set_msg endp
; ----------------------------------------------------------------------------
; Процедура установки курсора
; Входные данные ax - курсор
; ----------------------------------------------------------------------------
set_cursor proc
mov position,ax
ret
set_cursor endp

;set_cursor proc
; ; получаем доступ к регистру младшего байта
; mov dx,3b4h
; mov al,15
; out dx,al
; ; посылаем младший байт результата
; mov ax,position
; inc dx
; out dx,al
; ; получаем доступ к регистру старшего байта
; mov al,14
; dec dx
; out dx,al
; ; посылаем старший байт результата
; inc dx
; mov al,ah
; out dx,al
; ret
;set_cursor endp

code ends
end



code segment public
assume cs:code
org 100h
; процедуры из proc.asm
extrn set_init:near ; инициализация
extrn set_simbol:near ; вывод символа
extrn set_msg:near ; вывод сообщения
extrn set_cursor:near ; установка курсора
; ---------------------------------------------------------------------------- ; Основная процедура
; ---------------------------------------------------------------------------- main proc near
mov bh,0 ; цвет фона
mov bl,1 ; цвет символов
call set_init ; инициализация
; уберем курсор
mov dh,25
mov ah,2
int 10h
; покажем 'init device'
mov ax,1828 ; назначаем позицию курсора
call set_cursor ; устанавливаем свой курсор
lea bx,pre1 ; загружаем в bx смещение..
call set_msg ; выводим строку символов..
mov cx,7
@pre: push cx
lea bx,pre
mov ax,1674
call set_cursor
@mes: mov al,[bx]
cmp al,'^'
je @pos
call set_simbol
jc @mess
inc bx
jmp @mes
@pos: mov ax,1674
call set_cursor
mov sec,2
call set_wait
inc bx
jmp @mes
@mess: pop cx
loop @pre
mov bh,0 ; цвет фона
mov bl,1 ; цвет символов
call set_init ; инициализация
; покажем ' all done '
mov ax,1828
call set_cursor
lea bx,pre2
call set_msg
; задерка в 2 секунды
mov sec,36
call set_wait
; инициируем (по заданию)
mov bh,4
mov bl,5
call set_init
; покажем строку 'msg' (по заданию)
lea bx,msg
call set_msg
; покажем 'msg1'
mov ax,2620
call set_cursor
lea bx,msg1
call set_msg
; ждать нажатия любой клавиши, можно было бы сделать задерку.
mov ah,0
int 16h
; вернем курсор
mov bh,0
mov dh,0
mov dl,0
mov ah,2
int 10h
mov ax,4c00h ; возврат в дос с кодом
int 21h ; завершения програмы 0
set_wait proc
Malenya вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А может в Лондон? anya Основной 167 01.11.2007 18:53
Может кто в курсе... @&@ Автоклуб 7 04.09.2006 08:11


Текущее время: 09:02. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot