Определить, попадает ли точка М(с коорд. Х и У) в квадрат, заданный своей верхней левой вершиной и стороной - Assembler

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

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

Здравствуйте. Для ТАСМ необходимо написать код следующей задачи-

Определить, попадает ли точка М(с координатами Х и Y) в квадрат, заданный своей верхней левой вершиной и стороной. Стороны квадрата параллельны координатным осям.

До этого делал решение простенького квадратного уравненения, но тут просто лес((( Помогите пожалуйста((
сделал так, но что то неработает:
%nolist
Include mac.lib
%list
Data segment para 
coordx dw 5
coordy dw 5
lenght dw 5
X dw ?
Y dw ?
Mess1 db 10,13, 'Popadaet v Kvadrat$'
Mess2  db 10,13,'Ne Popadaet v Kvadrat$'
Messx db 10,13, 'X= $'
MessY db 10,13, 'Y= $'
 
Data ends
Stk segment para
Db  256 dup (?)
Stk ends
Code segment para 
Assume ds:data, ss:stk, cs:code
 
Begin: mov  ax, data
Mov ds,ax    ;Ввод данных
 
Message messx
Key_$2bin; Ввод числа X с клавиатуры в регистр AX
Mov x,ax 
 
Message messy
Key_$2bin; Ввод числа Y с клавиатуры в регистр AX
Mov y,ax 
 
; Ввод завершен
 
;if ((X-X1)<=L) and ((X-X1)>0)  and ((Y-Y1)<=L) and ((Y-Y1)>0) then 
; writeln('точка попадает в квадрат')
 
mov ax, x
cmp ax, coordx
jl nepopadaet  ;x<coordx
mov ax, y
cmp ax, coordy ;y>coordy
jg nepopadaet
mov ax, coordx
add ax, lenght
cmp ax, x ;x>coordx+lenght
jg nepopadaet
mov ax, coordy
sub ax, lenght
cmp ax, y ; y < coordy-lenght
jl nepopadaet
message mess1
jmp exit
nepopadaet: message mess2
exit:
inkey
mov ah, 4ch
int 21h
Code ends 
End begin

Решение задачи: «Определить, попадает ли точка М(с коорд. Х и У) в квадрат, заданный своей верхней левой вершиной и стороной»

textual
Листинг программы
seg000:0100 ; Base Address: 1000h Range: 10100h-101CDh Loaded length: CDh
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000      segment byte public 'CODE'
seg000:0100         assume cs:seg000
seg000:0100         org 100h
seg000:0100         assume es:nothing, ss:nothing, ds:seg000
seg000:0100         public start
seg000:0100 start       proc near
seg000:0100         mov     bx, 1C1h
seg000:0103         push    bx
seg000:0104         call    sub_10147
seg000:0107         add     sp, 2
seg000:010A         mov     word_10190, ax
seg000:010D         mov     bx, 1C7h
seg000:0110         push    bx
seg000:0111         call    sub_10147
seg000:0114         add     sp, 2
seg000:0117         mov     bx, 1A9h
seg000:011A         mov     word_10192, ax
seg000:011D         sub     ax, word_1018C
seg000:0121         js      loc_1013B
seg000:0123         cmp     ax, word_1018E
seg000:0127         ja      loc_1013B
seg000:0129         mov     ax, word_10190
seg000:012C         sub     ax, word_1018A
seg000:0130         js      loc_1013B
seg000:0132         cmp     ax, word_1018E
seg000:0136         ja      loc_1013B
seg000:0138         mov     bx, 194h
seg000:013B loc_1013B:
seg000:013B         push    bx
seg000:013C         call    sub_1017E
seg000:013F         add     sp, 2
seg000:0142         xor     ax, ax
seg000:0144         int     16h
seg000:0146         retn
seg000:0146 start       endp
seg000:0147 sub_10147       proc near
seg000:0147 arg_0       = word ptr  4
seg000:0147         push    bp
seg000:0148         mov     bp, sp
seg000:014A         push    [bp+arg_0]
seg000:014D         call    sub_1017E
seg000:0150         add     sp, 2
seg000:0153         xor     di, di
seg000:0155         mov     bx, 0Ah
seg000:0158 loc_10158:
seg000:0158         xor     ax, ax
seg000:015A         int     16h
seg000:015C         cmp     al, 0Dh
seg000:015E         jz      loc_1017A
seg000:0160         cmp     al, 30h
seg000:0162         jb      loc_10158
seg000:0164         cmp     al, 39h
seg000:0166         ja      loc_10158
seg000:0168         xor     dx, dx
seg000:016A         push    ax
seg000:016B         and     ax, 0Fh
seg000:016E         xchg    ax, di
seg000:016F         xor     dx, dx
seg000:0171         mul     bx
seg000:0173         add     di, ax
seg000:0175         pop     ax
seg000:0176         int     29h
seg000:0178         jmp     short loc_10158
seg000:017A loc_1017A:
seg000:017A         mov     ax, di
seg000:017C         pop     bp
seg000:017D         retn
seg000:017D sub_10147       endp
seg000:017E sub_1017E       proc near
seg000:017E arg_0       = word ptr  4
seg000:017E         push    bp
seg000:017F         mov     bp, sp
seg000:0181         mov     ah, 9
seg000:0183         mov     dx, [bp+arg_0]
seg000:0186         int     21h
seg000:0188         pop     bp
seg000:0189         retn
seg000:0189 sub_1017E       endp
seg000:018A word_1018A      dw 5
seg000:018C word_1018C      dw 5
seg000:018E word_1018E      dw 5
seg000:0190 word_10190      dw 0
seg000:0192 word_10192      dw 0
seg000:0194 aPopadaetVKvadr db 0Ah
seg000:0194         db 0Dh,'Popadaet v Kvadrat$'
seg000:01A9 aNePopadaetVKva db 0Ah
seg000:01A9         db 0Dh,'Ne Popadaet v Kvadrat$'
seg000:01C1         db 0Ah
seg000:01C1         db 0Dh,'X= $'
seg000:01C7 aY          db 0Ah
seg000:01C7         db 0Dh,'Y= $'
seg000:01C7 seg000      ends
seg000:01C7         end start

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

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