Люди помогите написать программу развлетвлений,просто совсем не получается,не выводятся значения для B,для А и Х все нормально: Вот задание:
(C-N)в квадрате X=---------------------------- (Nквадрат-Cквадрат)/2
A={X_квадрат+C если -4<=X<12 {С_квадрат*X+N в остальных случаях
B={2A,если A+X_квадрат>3 {A-1 если A+X_квадрат=3 {3*A,если A+X_квадрат<3
C,N-вводятся с клавиатуры
Вот собственно код для перевода чисел из аскии в двоичный(обязательно)и обратно.А также программа для вычисления Х и нахождения условия по А,для В,еще раз повторяюсь не работает.
| Код | title prcod sgcod SEGMENT PARA 'code' ASSUME CS: sgcod, DS: sgdata, SS: sgstek, ES: nothing org 100h begin proc near
;--------------------------Ochistka ekrana i vvod mov ax,0600h mov bh,07 mov cx,0000 mov dx,184fh int 10h
mov ah,02 mov bh,00 mov dh,01 mov dl,49 int 10h
mov ah,0ah lea dx,vvod int 21h
call asciibin mov ax,binv mov c,ax
mov ah,02 mov bh,00 mov dh,04 mov dl,49 int 10h
mov ah,0ah lea dx,vvod int 21h
call asciibin mov ax,binv mov n,ax
;----------------------------------Vichislenie X
mov ax,n mul ax mov b1,ax mov ax,c mul ax mov b2,ax mov bx,2 xor ax,ax mov ax,b1 sub ax,b2 div bx mov b4,ax mov ax,c sub ax,n mul ax xor dx,dx div b4 mov b5,ax xor ax,ax mov ax,b5 mov x,ax
mov binv,ax call binascii
mov ah,02 mov bh,00 mov dh,10 mov dl,20 int 10h
mov ah,09 lea dx,strokaviv0 int 21h
mov ah,02 mov bh,00 mov dh,10 mov dl,49 int 10h
mov ah,09 lea dx,ascii int 21h
mov ah,00 int 16h
;---------------------------------Sravnenie po A Uslovie 1
xor bx,bx xor ax,ax mov ax,x mov bx,-4 cmp bx,x jle m1 jnle m3
m1: xor bx,bx mov bx,12 cmp x,bx jl m2 jnl m3 m2: mul x add ax,c m3: mov x,ax
;-------------------------Sravnenie po A Uslovie 2
xor bx,bx xor ax,ax mov ax,x mov bx,-4 cmp bx,x jge m4 jnge m6 m4: xor bx,bx mov ax,ax mov bx,12 cmp bx,x jg m5 jng m6 m5: xor ax,ax mov ax,c mul ax mul x add ax,n mov a,ax m6: mov x,ax
;--------------------------Vivod na ekran X,A
mov binv,ax call binascii
mov ah,02 mov bh,00 mov dh,12 mov dl,20 int 10h
mov ah,09 lea dx,strokaviv1 int 21h
mov ah,02 mov bh,00 mov dh,12 mov dl,49 int 10h
mov ah,09 lea dx,ascii int 21h
mov ah,00 int 16h
;----------------------------Uslovie po B nomer 1
;----------------------------Uslovie po B nomer 2
;----------------------------Uslovie po B nomer 3
;-------------------------Vivod na ekran B
mov binv,ax call binascii
mov ah,02 mov bh,00 mov dh,14 mov dl,20 int 10h
mov ah,09 lea dx,strokaviv2 int 21h
mov ah,02 mov bh,00 mov dh,14 mov dl,49 int 10h
mov ah,09 lea dx,ascii int 21h
mov ah,00 int 16h
int 20h ret
begin endp
;--------------------------------Podprogrammy
asciibin proc near mov binv,0 mov mul10,1 mov cx,0010 lea si,numb-1 xor bx,bx mov bl,real b20: mov al,[si+bx] and ax,000fh mul mul10 add binv,ax mov ax,mul10 mul cx mov mul10,ax dec bx jnz b20 ret asciibin endp
binascii proc near mov cx,0010 lea si,ascii-1 mov bx,3 mov ax,binv c20: cmp ax,0010 jb c30 xor dx,dx div cx or dl,30h mov [si+bx],dl dec bx jmp c20 c30: or al,30h mov [si+bx],al ret binascii endp binv dw 0 mul10 dw 1 ascii db 4 dup(' '),'$' c dw 0 n dw 0 a dw 0 b dw 0 b1 dw 0 b2 dw 0 b3 dw 0 b4 dw 0 b5 dw 0 b6 dw 0 x dw 0 x1 db 4 dup(' '),'$' vvod label byte max db 4 real db ? numb db 4 dup(' ') strokaviv0 db 'X:','$' strokaviv1 db 'A:','$' strokaviv2 db 'B:','$' sgcod ends end begin
|
|