Код:
.model SMALL
.STACK 100h
.DATA
const1 dw 15 ;pervaya konstanta
const2 dw -256 ;vtoraya
const3 dw 65280 ;tretya
prigl db 'Constants in computer memory:','$'
ctrl db 0Dh,0Ah,'$' ;Enter, toyest perexod na nachalo tekushey stroki i perexod kursora na odnu poziciyu vniz
con1 db ' 6375 - ','$' ;Poyasneniye k pervoy konstante
con2 db ' 256 - ','$' ;... ko vtoroy
con3 db '65280 - ','$' ;... k tretyey
.CODE
start:
push @DATA
pop DS
mov ah,09h
mov dx,offset prigl ;Vivesti priqlasheniye
int 21h
mov ah,09h
mov dx,offset con1 ;Vivesti poyasneniye 1 konstanti
int 21h
mov ah,02h ;Funkciya vivoda simvola
mov bx,const1 ;Kod 1-oy vivodimoy konstanti
mov cx,10h ;Schetchik cikla = 16 , t.e. 16 bit kajdoy konstanti
mov di,3 ;Schetchik dlya 3-x konstant
jmp posl
met1:
mov ah,09h
mov dx,offset con2 ;Vivesti poyasneniye 2 konstanti
int 21h
mov ah,02h
mov bx,const2 ;Kod 2-oy viv
odimoy konstanti
mov cx,10h
jmp posl
met2:
mov ah,09h
mov dx,offset con3 ;Vivesti poyasneniye 3 konstanti
int 21h
mov ah,02h
mov bx,const3 ;Kod 3-yy vivodimoy konstanti
mov cx,10h
posl:
mov dx,30h ;v dx zanosim kod simvola 0
shl bx,1 ;sdviq soderjimoqo reqistra BX na 1 bit vlevo
adc dl,0 ;Slojeniye s uchetom flaqa CF, t.k skladivayem s nulem, to uchitivayetsa tut tolko flaq CF
int 21h
loop posl ;Povtorayem 16 raz
mov ah,09h
mov dx,offset ctrl ;Perevod stroki
int 21h
dec di ;Umenshayem schetchik
cmp di,2 ;Smotrim di=2?
je met1 ;Da-perexod dlya vivoda 2 konstanti
cmp di,1 ;di=2?
je met2 ;Da-perexod dlya vivoda 1 konstanti
MOV AX, 4C00h ;Inache vixod
int 21h
end start
Нужно немножно доделать, а именно осуществить запись в файл.
Вот попробовал так:
;----------------------------------
Тут обозначил то, что добавил
;----------------------------------
Код:
.model SMALL
.STACK 100h
.DATA
const1 dw 15 ;pervaya konstanta
const2 dw -256 ;vtoraya
const3 dw 65280 ;tretya
prigl db 'Constants in computer memory:','$'
ctrl db 0Dh,0Ah,'$' ;Enter, toyest perexod na nachalo tekushey stroki i perexod kursora na odnu poziciyu vniz
con1 db ' 6375 - ','$' ;Poyasneniye k pervoy konstante
con2 db ' 256 - ','$' ;... ko vtoroy
con3 db '65280 - ','$' ;... k tretyey
handle dw ?
bufer db 32h dup(?)
file DB '1.txt',0
mes DB 'Oshibka', 0Ah, 0Dh,'$'
.CODE
start:
push @DATA
pop DS
;---------------sozdaniye fayla
MOV ah, 3Ch
mov CX, 2
LEA dx, file
int 21h
JC error
MOV handle, ax
;---------------
mov ah,09h
mov dx,offset prigl ;Vivesti priqlasheniye
int 21h
mov ah,09h
mov dx,offset con1 ;Vivesti poyasneniye 1 konstanti
int 21h
mov bx,const1 ;Kod 1-oy vivodimoy konstanti
mov cx,10h ;Schetchik cikla = 16 , t.e. 16 bit kajdoy konstant
i
mov di,3 ;Schetchik dlya 3-x konstant
jmp posl
met1:
mov ah,09h
mov dx,offset con2 ;Vivesti poyasneniye 2 konstanti
int 21h
mov bx,const2 ;Kod 2-oy vivodimoy konstanti
mov cx,10h
jmp posl
met2:
mov ah,09h
mov dx,offset con3 ;Vivesti poyasneniye 3 konstanti
int 21h
mov bx,const3 ;Kod 3-yy vivodimoy konstanti
mov cx,10h
posl:
mov dx,30h ;v dx zanosim kod simvola 0
shl bx,1 ;sdviq soderjimoqo reqistra BX na 1 bit vlevo
adc dl,0 ;Slojeniye s uchetom flaqa CF, t.k skladivayem s nulem, to uchitivayetsa tut tolko flaq CF
int 21h
loop posl
;-----------------zapis v fayl. VOT zdes nujno koe-chto ispravit
mov bx, handle
mov cx, 10h
mov ah, 40h
mov bufer[SI], dl
lea dx, bufer[SI]
int 21h
;------------------
mov ah,09h
mov dx,offset ctrl ;Perevod stroki
int 21h
dec di ;Umenshayem schetchik
cmp di,2 ;Smotrim di=2?
je met1 ;Da-perexod dlya vivoda 2 konstanti
cmp di,1 ;di=1?
je met2 ;Da-perexod dlya vivoda 1 konstanti
JMP SHORT zak
int 21h
zak:
;-------------------Zakritiye fayla
MOV AH, 3Eh
MOV BX, handle
int 21h
JMP
SHORT kones
;-------------------
error:
MOV AH,9
LEA DX, mes
int 21h
kones:
MOV AX, 4Ch
int 21h
end start
Файл создается, но пишет туда пару символов, а не все.
Это минутное дело для вас, уважаемые ассемблерщики. Помогите, очень нужно.