Решение выражения x=(155d-c)/(a+b)+c*c - Assembler
Формулировка задачи:
Здравствуйте. Помогите пожалуйста с программой. Надо чтоб число выводило больше 65535 на экран.
Листинг программы
- text segment 'code'
- assume cs:text, ds:data
- myproc proc
- mov ax, data
- mov ds, ax
- lea dx, str1
- mov ah, 09h
- int 21h
- mov ax,155
- imul d
- mov bx,dx
- mov cx,ax
- mov cx,c
- sub ax,cx
- mov cx,ax
- mov ax,a
- mov bx,b
- add ax,bx
- mov bx,ax
- mov ax,cx
- idiv bx
- mov cx,ax
- mov ax,c
- imul c
- add ax,cx
- call outp
- mov x, ax
- lea dx, str2
- mov ah, 09h
- int 21h
- mov ax, 4c00h
- int 21h
- myproc endp
- outp proc
- push ax
- push cx
- push dx
- push bx
- xor cx,cx
- mov bx, 000Ah
- cont: xor dx, dx
- div bx
- push dx
- inc cx
- or ax, ax
- jnz cont
- mov ah, 02h
- next:
- pop dx
- add dl, 30h
- int 21h
- loop next
- pop bx
- pop dx
- pop cx
- pop ax
- ret
- outp endp
- text ends
- data segment
- a dw 6
- b dw 2
- c dw 60
- d dw 4
- x dw ?
- str1 db 'Решение выражения , x=(155d-c)/(a+b)+c*c', 0Ah, 0Dh, '$'
- str2 db 0Ah, 0Dh, 'Решение закончено', 0Ah, 0Dh, '$'
- data ends
- stack1 segment para stack 'stack'
- db 128 dup (?)
- stack1 ends
- end myproc
Решение задачи: «Решение выражения x=(155d-c)/(a+b)+c*c»
textual
Листинг программы
- model tiny
- .code
- org 100h
- start: mov ah,9
- lea dx,dbRes
- int 21h
- FINIT
- ;
- FILD word ptr c
- FIMUL word ptr c;c^2
- ;
- FILD word ptr e;155;
- FIMUL word ptr d;155*d
- FISUB word ptr c;155*d-c
- ;
- FILD word ptr a
- FIADD word ptr b;a+b
- ;
- FDIVP; st(1),st(0);(155*d-c)/(a+b)
- FADDP; st(1),st(0);(155*d-c)/(a+b)+c^2
- ;
- FBSTP dat
- ;
- lea si,outdat+9
- mov cx,10
- std
- @@01: lodsb
- aam 10h
- or ax,'00'
- xchg ah,al
- int 29h
- xchg ah,al
- int 29h
- loop @@01
- ret
- ;
- dbRes db 10,13,'Result:$'
- a dw 6
- b dw 2
- c dw 60
- d dw 4
- e dw 155
- outdat label byte
- dat DT ?
- db 98h
- end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д