Ïîìîùü - Ïîèñê - Ïîëüçîâàòåëè - Êàëåíäàðü
Ïîëíàÿ âåðñèÿ: ïîìîãèòå íàïèñòü ÷åòûðå çàäàíèÿ
Ôîðóì «Âñ¸ î Ïàñêàëå» > Delphi, Assembler è äðóãèå ÿçûêè. > Assembler
Ãîñòü_Darkmax
sad.gif Ïîæàëóéñòà ïîìîãèòå ñîâñåì àò÷àèëñÿ íå ìîãó íàïèñàòü ýòó ðàáîòó à îò ýòîãî çàâèñèò ïðàêòè÷åñêè âñÿ ìîÿ äàëüíåéøàÿ æèçíü, ïîðà óæå ñäàâàòü à ó ìåíÿ íè ôèãà íåò êðîìå íåðàáîòàþùèõ îáðûâêîâ ïðîãðàìì. Íå äàåòñÿ ìíå ÷òî òî ýòî ÿçûê íèçêîãî óðîâíÿ
(ASSEMBLER 16 ðàçðÿäíûé òî-åñò ïîä DOS). Çàðàíåå áëàãîäàðåí.


1. Íàéòè çíà÷åíèå âûðàæåíèÿ.
Ïåðåìåííûå - äâóçíà÷íûå 16-ðè÷íûå ÷èñëà - ââîäÿòñÿ ïîëüçîâàòåëåì ñ êëàâèàòóðû.
Îòâåò âûâåñòè íà ýêðàí â 10-îé è 16-îé ñèñòåìàõ ñ÷èñëåíèÿ. Ïðåäóñìîòðåòü ñëó÷àé, êîãäà äåëèòåëü ðàâåí íóëþ.
(a*8-b*2)/(d+2)

2. Ðàáîòà ñ ôàéëàìè, ñîçäàíèå, ÷òåíèå, çàïèñü â ôàéë.
Îáùåå çàäàíèå: Íàïèñàòü ïðîãðàììó ïî ñîçäàíèþ òåêñòîâîãî ôàéëà íà îñíîâíîì äèñêå.
Çàíåñòè â íåãî íåñêîëüêî ïðîèçâîëüíûõ ñòðîê.
1). Âûâåñòè íà ýêðàí i-óþ ñòðîêó.
2). Çàìåíèòü âñå ñèìâîëû «i» íà ñèìâîëû «j» â k-îé ñòðîêå.
3). Âûâåñòè íà ýêðàí i-îå ñëîâî èç j-îé ñòðîêè.
4). Âûâåñòè i-óþ ñòðîêó â íîâûé ôàéë.
5). Íàõîæäåíèå ôàéëà íà äèñêå, óäàëåíèå ôàéëà ñ äèñêà, ïåðåèìåíîâàíèå ôàéëà

3. ãðàôèêà â òåêñòîâîì ðåæèìå:
ââîä è ïåðåìåùåíèå ïî ýêðàíó ïðîèçâîëüíîãî ñèìâîëà:
Ñâåðõó âíèç èëè ïî äèàãîíàëè èç âåðõíåãî ïðàâîãî óãëà â ëåâûé íèæíèé óãîë.

4. Ãðàôèêà â âèäåîðåæèìå: ñîçäàíèå ïðîñòåéøåãî èçîáðàæåíèÿ:
êâàäðàò, öâåò çàëèâêè è ãðàíèöû óêàçû
xds
Ïåðâàÿ çàäà÷à:
.186
.model tiny

locals

.code
.startup
               mov dl,'a'
               call ReadIntHex
               push ax
               mov dl,'b'
               call ReadIntHex
               push ax
               mov dl,'d'
               call ReadIntHex

               add ax,2
               jz ErrDiv0
               xchg cx,ax         ;cx = d + 2
               pop ax             ;ax = -b * 2
               shl ax,1            
               neg ax
               pop dx
               shl dx,3           ;dx = a * 8
               add ax,dx          ;ax = a * 8 - b * 2
               cwd
               idiv cx            ;ax = (a * 8 - b * 2) / (d + 2)

               push ax
               call WriteIntDec
               call Writeln
               pop ax
               call WriteIntHex
               call Writeln

               mov ax,4C00h
               int 21h

ErrDiv0:
               mov ah,9
               lea dx,MsgDiv0
               int 21h
               mov ax,4C01h
               int 21h

WriteChar       proc
               push ax
               mov ah,2
               int 21h
               pop ax
               ret
WriteChar       endp

ReadDigit       proc
               mov ah,8
               int 21h
               mov dx,ax
               cmp Sign,0
               jne @@0
               inc Sign
               cmp al,'-'
               jne @@0
               neg Sign
               call WriteChar
               jmp ReadDigit
@@0:
               cmp al,'0'
               jb ReadDigit
               cmp al,'9'
               ja @@1
               sub al,'0'
               call WriteChar
               ret
@@1:
               cmp al,'A'
               jb ReadDigit
               cmp al,'F'
               ja @@2
               sub al,'A'-10
               call WriteChar
               ret
@@2:
               cmp al,'a'
               jb ReadDigit
               cmp al,'f'
               ja ReadDigit
               sub al,'a'-10
               call WriteChar
               ret
ReadDigit       endp

ReadIntHex      proc
               mov Sign,0
               call WriteChar
               mov dl,'>'
               call WriteChar
               call ReadDigit
               push ax
               call ReadDigit
               call Writeln
               pop dx
               shl dx,4
               or ax,dx
               xor ah,ah
               cmp Sign,0
               jl @@1
               ret
@@1:
               neg ax
               ret
ReadIntHex      endp

Writeln         proc
               mov dl,13
               call WriteChar
               mov dl,10
               call WriteChar
               ret
Writeln         endp

WriteHexDigit   proc
               mov dx,ax
               and dl,0Fh
               cmp dl,10
               jae @@1
               add dl,'0'
               call WriteChar
               ret
@@1:
               add dl,'A'-10
               call WriteChar
               ret
WriteHexDigit   endp

WriteSign       proc
               or ax,ax
               js @@1
               ret
@@1:
               neg ax
               mov dl,'-'
               call WriteChar
               ret
WriteSign       endp

WriteIntHex     proc
               call WriteSign
               rol ax,4
               call WriteHexDigit
               rol ax,4
               call WriteHexDigit
               rol ax,4
               call WriteHexDigit
               rol ax,4
               call WriteHexDigit                                
               ret
WriteIntHex     endp

WriteIntDec     proc
               call WriteSign
               push 0
               mov cx,10
@@1:
               xor dx,dx
               div cx
               add dx,'0' or 0FF00h
               push dx
               or ax,ax
               jnz @@1
@@2:
               pop dx
               or dx,dx
               jz @@exit
               mov ah,2
               int 21h
               jmp @@2
@@exit:
               ret
WriteIntDec     endp

.const
MsgDiv0         db 'Division by zero',13,10,'$'

.data?
Sign            db ?

end
xds
Çàäà÷à 4:
.model tiny

locals

.code
.startup
               mov ah,0Fh        ;çàïîìèíàåì òåêóùèé âèäåîðåæèì
               int 10h
               xor ah,ah
               push ax

               lea dx,PromptX    ;÷òåíèå âõîäíûõ äàííûõ
               call ReadWord
               mov x,ax
               lea dx,PromptY
               call ReadWord
               mov y,ax
               lea dx,PromptW
               call ReadWord
               mov w,ax
               lea dx,PromptH
               call ReadWord
               mov h,ax
               lea dx,PromptC
               call ReadWord
               mov Color,al

               mov ax,13h        ;óñòàíîâêà ãðàôè÷åñêîãî ðåæèìà
               int 10h

               mov ax,0A000h
               mov es,ax

               mov ax,320
               mul y
               add ax,x
               xchg di,ax
               mov bx,w
               mov dx,h
               mov al,Color
               call DrawRect

               xor ax,ax          ;æäåì íàæàòèÿ ëþáîé êëàâèøè
               int 16h
               pop ax            ;âîññòàíàâëèâàåì ïðåæíèé âèäåîðåæèì
               int 10h
               mov ax,4C00h      ;âûõîä
               int 21h

;Âûâîä ïðÿìîóãîëüíèêà
;ES:DI = íà÷àëüíûé àäðåñ, BX = øèðèíà, DX = âûñîòà, AL = öâåò çàëèâêè
DrawRect      proc
               or dx,dx
               jz @@exit
               or bx,bx
               jz @@exit
               cld
@@1:
               mov cx,bx
               rep stosb
               add di,320
               sub di,bx
               dec dx
               jnz @@1
@@exit:
               ret
DrawRect      endp

WriteChar       proc
               push ax
               mov ah,2
               int 21h
               pop ax
               ret
WriteChar       endp

ReadWord        proc
               push bp
               mov bp,sp
               sub sp,2
Result          = word ptr [bp-2]

               mov ah,9
               int 21h

               mov Result,0
@@1:
               mov ah,8
               int 21h
               cmp al,13
               je @@2
               cmp al,'0'
               jb @@1
               cmp al,'9'
               ja @@1
               mov dx,ax
               call WriteChar
               sub al,'0'
               xor ah,ah
               xchg cx,ax
               mov ax,10
               mul Result
               add ax,cx
               mov Result,ax
               jmp @@1
@@2:
               mov dl,13
               call WriteChar
               mov dl,10
               call WriteChar
               mov ax,Result
               mov sp,bp
               pop bp
               ret
ReadWord        endp

.const
PromptX         db 'x> $'
PromptY         db 'y> $'
PromptW         db 'Øèðèíà> $'
PromptH         db 'Âûñîòà> $'
PromptC         db 'Öâåò> $'

.data?
x               dw ?
y               dw ?
w               dw ?
h               dw ?
Color           db ?

end
xds
Ïîêàæè, êàêèå "íåðàáàòàþùèå îáðûâêè ïðîãðàìì" ó òåáÿ åñòü...
Darkmaximus
unsure.gif Èçâèíè ÷òî ÿ îòâå÷àþ áîä íèêàì Darkmaximus ÿ îáû÷íî Darkmax ,íèæíåå ñîîáùåíèå òîæå ìîå, íî ñ ìîèì íèêîì ÷òî òî ñëó÷èëîñü
è ÿ ïî÷åìó-òî âèæó ñåáÿ êàê ÃÎÑÒÜ-Darkmax- ïîýòîìó ïðèøëîñü çàðåãèòñÿ êàê Darkmaximus. Íàñ÷åò îáðûâîâ ïðîãðàìì òû èõ óæ
ñäåëàë ,à 2) è 3) çàäàíèÿ ÿ â ïðèíöèïè íå ìîãó ñäåëàòü ïîòîìó ÷òî íåïîëó÷àåòñÿ ñîçäàòü ôàèë à ïîòîì âûâîäèòü èç íåãî ÷òî-òî èëè
çàìåíÿòü ÷òî-òî èëè òåìáîëåå âûâîäèòü ÷òî-òî â íîâûé ôàèë. Ïî òðåòèìó çàäàíèþ ó ìåíÿ åñòü îáðûâêè ïðîã íî îíè î÷åíü íåëåïûå
è ïîêàçûâàòü íå÷åãî ïðîñòî ñìåõ (ãîðüêèé ñìåõ).
xds
Íàïèñàë ðåøåíèå çàäàíèÿ ¹2, ï. 1-4. Íå ìîãó âûëîæèòü ñþäà èç-çà âðåìåííûõ ïðîáëåì ñ çàêà÷êîé ôàéëîâ íà ôîðóìå. Darkmaximus, ñêèíü ìíå íà ICQ àäðåñ, êóäà ìîæíî îòïðàâèòü êîä.
Darkmaximus
xds ìîæåø îòïðàâèòü íà max1986@atnet.ru ýòî ìîé ìûëüíèê
xds
Îòïðàâèë äâà ïèñüìà. Äîëåòåëè?
Darkmaximus
:D ïîëó÷èë òâîé ïðîãè.
Darkmaximus
ÑÏÎÑÈÁÎ!!!! :D
Ýòî òåêñòîâàÿ âåðñèÿ — òîëüêî îñíîâíîé êîíòåíò. Äëÿ ïðîñìîòðà ïîëíîé âåðñèè ýòîé ñòðàíèöû, ïîæàëóéñòà, íàæìèòå ñþäà.