Найти область определения функции - Assembler

Узнай цену своей работы

Формулировка задачи:

Функция Y= 3x3+5x2+7 Область определения функции x [0,7].
; multi-segment executable file template.
include 'emu8086.inc' 
 
data segment
    y dw ?
    S1 db   'Vvedite X (x=[0;7]): ',13,10,' $'  
    S3 db 13,10,'Rezultat: $'
    S4 db 'Oshibka, X ne vhodit v diapazon [0;7] $'   
    pkey db 13, 10, "press any key...$"
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax 
      
    lea dx, S1 ;Soobshcheniye o vvode chisla
    mov ah, 9
    int 21h       
    
    CALL   print_string ;Vvod chisla
    
    xor cx,cx
    xor ax,ax 
    xor bx,bx
    call   print_string
    call   scan_num
    cmp cx,7
    jg l1
    cmp bx,cx
    jg l1
    jmp short l2 
 l1:jmp l3   
 l2:mov y, cx ;Sohranuem chislo
    
    call clear_screen   
   
    xor ax,ax
    xor bx,bx 
    xor dx,dx
    xor cx,cx
    mov bx,y
    mov ax,bx 
    imul bx ; Vozvodim v kvadrat
    mov cx,ax
    imul bx ; Vozvodum v kub
    mov dx,3
    imul dx
    mov dx,ax
    xor dx,dx
    mov ax,5
    imul cl
    mov cx,ax
    mov ax,7
    mov ax,07fffh 
    and dx,ax
    mov y,dx
     
    lea dx, S3 ;Soobshcheniye o vivode rezultata
    mov ah, 9
    int 21h  

    mov ax, y ; Vivod rezultata
    call print_num_uns
    mov ah,02h
    int 21h 
    jmp short l4
 
 l3:call clear_screen   
    lea dx, S4 ;Soobshcheniye ob oshibke
    mov ah, 9
    int 21h    
                     
 l4:lea dx, pkey
    mov ah, 9
    int 21h        ; output string at ds:dx
    
    ; wait for any key....    
    mov ah, 1
    int 21h
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
    DEFINE_SCAN_NUM
    DEFINE_PTHIS 
    DEFINE_PRINT_STRING
    DEFINE_PRINT_NUM_UNS
    DEFINE_CLEAR_SCREEN  
end start ; set entry point and stop the assembler.
НЕ могу найти в чем ошибка в коде.

Решение задачи: «Найти область определения функции»

textual
Листинг программы
   
    mov dx,3
    imul dx
    mov dx,ax
    xor dx,dx
    mov ax,5
    imul cl
    mov cx,ax
    mov ax,7
    mov ax,07fffh 
    and dx,ax

Объяснение кода листинга программы

  1. mov dx,3 - Переменная dx получает значение 3
  2. imul dx - Переменная dx умножается на текущее значение ax
  3. mov dx,ax - Переменная dx получает значение ax
  4. xor dx,dx - Переменная dx инвертируется
  5. mov ax,5 - Переменная ax получает значение 5
  6. imul cl - Переменная cl умножается на текущее значение ax
  7. mov cx,ax - Переменная cx получает значение ax
  8. mov ax,7 - Переменная ax получает значение 7
  9. mov ax,07fffh - Переменная ax получает значение 07fffh (0x7fff)
  10. and dx,ax - Переменная dx получает результат битового И с ax

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы