Y1=7, если x<3. Как докончить? - Assembler
Формулировка задачи:
Здравствуйте! Помогите пожалуйста поправить программку. задание было такое: http://www.cyberforum.ru/attachment....&stc=1&thumb=1 . Нужно, чтоб при трассировке было видно конечное значение... НАверное я что-то забыл...
ВОт код, что я написал
(Надо было макросы использовать)
\
И вот что у меня получается при TASM
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
Решение задачи: «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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д