Y1=7, если x<3. Как докончить? - Assembler

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

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

Здравствуйте! Помогите пожалуйста поправить программку. задание было такое: http://www.cyberforum.ru/attachment....&stc=1&thumb=1 . Нужно, чтоб при трассировке было видно конечное значение... НАверное я что-то забыл... ВОт код, что я написал (Надо было макросы использовать) \
.model small
.stack 30
.data
x dw 6
a dW 2
w dW 4
w1 dW 2
.data?
y dw ?
y1 dw ?
y2 dw ?
.code 
 
func1 macro x11,a11,y11
local MТ1,MT2,MT3
push ax 
push cx 
push bx 
 
mov ax,x11 
cmp ax,3 
jge MT1
add ax,7
JMP MT2
 
MT1:
  mov ax,a11
cmp dx,0
jge MT3
neg dx ;зменение знака (получение двоичного дополнения) источника.
MT3:
    add ax,dx
MT2:
  mov y11,ax
pop bx 
pop cx 
pop ax 
 
 endm
 
func2 macro x11,y22
   local MT
push ax 
push cx 
push bx 
 
   mov ax,x11
   mov y22,1
   cmp ax,5
   jg MT
   ADD AX,5d
   mov y22,ax
   m1:
pop bx 
pop cx 
pop ax 
 
  endm 
 
.startup 
mov ax,seg y1
 mov ds,ax
  func1 x,a,y1 ; вычисление y1
  func2 x,y2    ; вычисление y2
 
.exit 0 
end
И вот что у меня получается при TASM http://www.cyberforum.ru/attachment....&stc=1&thumb=1

Решение задачи: «Y1=7, если x<3. Как докончить?»

textual
Листинг программы
; tasm dos exe #
.model small
.stack 30
.data
x dw 6
a dw 2
y dw ?
y1 dw ?
y2 dw ?
.code 
 
func1   macro x11,a11,y11
local MТ1,MT2,MT3
    push ax 
    mov ax,x11 
    cmp ax,3 
    jge MT1
    add ax,7
    JMP MT2 
MT1:    mov ax,a11
    test ax,ax
    jns MT3
    neg ax ;зменение знака 
MT3:    add ax,x11
MT2:    mov y11,ax
    pop ax  
endm 
func2   macro x11,a11,y22
local M1,M2
push ax 
    cmp x11,5
    jg M1
    mov y22,1
    jmp M2
M1: mov ax,a11
    add ax,x11
    mov y22,ax
M2:     pop ax  
endm 
 
.startup 
    mov ax,@data
    mov ds,ax
    func1 x,a,y1 ; вычисление y1
    func2 x,a,y2   ; вычисление y2
        mov dx,0
    mov ax,y1
    div y2
    mov y,dx; y = y1 mod y2
.exit 0 
end

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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