Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Программирование, базы данных. /

Разработка командного процессора, реализующего команды dir и mkdir на ассемблере

←предыдущая следующая→  
1 2 3 4 5 6 7 

; Номер диска 26 ?

jg not_1 ; Если больше, выходим

mov_val:

mov dl,al ; Заносим номер диска

not_1:

mov ah,36h ; Функция получения информации о диске

int 21h

ret

GetInfo endp

;::::::::::::::::::::::::::::::::::::::::::::::::::

;:: Выводит размер текущего диска в Килобайтах ::::

;::::::::::::::::::::::::::::::::::::::::::::::::::

totsize proc near

call GetInfo

mov temp,dx ; Запоминаем число кластеров

mul cx ; Умножаем число секторов на размер сектора

mul temp ; Умножаем все на количество кластеров

call Div1024 ; Делим на 1024 и получаем размер в Кбайтах

mov word ptr totalKB,ax ; Запоминаем младшее и старшее слово

mov word ptr totalKB+2,dx ; полученного результата

call Decimal

mov ah,9

lea dx,stringT

int 21h

ret

totsize endp

;:::::::::::::::::::::::::::::::::::::::::::::::

;::: Выводит размер свободного пространства ::::

;::: текущего диска в Килобайтах ::::

;:::::::::::::::::::::::::::::::::::::::::::::::

fresize proc near

call GetInfo

mul cx

mul bx

call Div1024

mov word ptr freeKB,ax

mov word ptr freeKB+2,dx

call Decimal

mov ah,9

lea dx,stringF

int 21h

ret

fresize endp

DecWrt proc near

lea si,outst ; очищаем строку

mov cl,0

mov [si],cl

mov [si+1],cl

lea si,outst

mov cl,48

mov [si],cl

mov cx,0010

lea si,outst+1

a20: cmp ax,0010

jb a30

xor dx,dx

div cx

or dl,30h

mov [si],dl

dec si

jmp a20

a30: or al,30h

mov [si],al

mov ah,40h ; выводим строку

mov bx,01

mov cx,02

lea dx,outst

int 21h

ret

outst db ' '

DecWrt endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::

;:: Процедура вывода числа в десятичном формате ::::

;:::::::::::::::::::::::::::::::::::::::::::::::::::

Decimal proc C uses es di bx cx dx ds

mov bx,10

push cs

pop es

push ax ; Заполняем массив DecString байтами 00

xor ax,ax ;

cld ;

mov cx,3 ;

lea di,DecStr ;

rep stosw ;

pop ax ;

lea di,DecStr+5 ; DI адресует последний байт массива

std

div bx

push ax

mov ax,dx

or al,30h ; Преобразуем в ASCII-символ.

stosb

pop ax

c10:

xor cx,cx

c20:

cmp ax,bx ; Делимое в AX, делитель в BX.

jb c30 ; Частное накапливается в CX.

sub ax,bx ; Деление методом вычитания

inc cx ; (страхует от переполнения)

jmp c20

c30:

or al,30h ; Переводим в ASCII

stosb ; Заносим в DecString

mov ax,cx

cmp ax,bx

jae c10

or al,0

jz c50

or al,30h

stosb

c50:

mov ah,9

lea dx,space

int 21h

mov ah,9

lea dx,DecStr

int 21h

ret

DecStr db 6 dup (0)

db '$'

Decimal endp

end begin

←предыдущая следующая→  
1 2 3 4 5 6 7 


Copyright © 2005—2007 «RefStore.Ru»