私はAckermann関数をプログラムする必要があります。これは私がこれまで持っているものです:アセンブリx86:Ackermann関数をプログラムする必要があります
私はNまたはMの値を入れて、私はいつも私がなぜ知っていると思うの答えは0を得るものは何でも.model small
;
extrn putstrng:far
extrn newline:far
extrn getdec$:far
extrn putdec$:far
;
;
.stack 1024
;
.const
.data
.code
assume ds:dgroup
;
debut: mov ax, seg dgroup
mov ds, ax
mov es, ax
;
mov ax,2 ; value of N
mov bx,ax
mov ax,2 ; Value of M
mov dx,ax
mov cx,0
push dx
push bx
call ackermann
pop bx
pop dx
MOV ax, 0
MOV ax, cx
call putdec$
call newline
mov ax, 4c00h
int 21h
ackermann proc far C uses cx
mov dx, [bp+6]
mov bx, [bp+4]
cmp bx, 0
JE firstCase
cmp dx, 0
JE secondCase
dec dx
push dx
push bx
CALL ackermann
pop bx
pop dx
dec bx
push dx
push bx
CALL ackermann
pop bx
pop dx
ret
firstCase:
MOV cx, dx
inc cx
ret
secondCase:
DEC bx
push dx
push bx
call ackermann
pop bx
pop dx
ret
ackermann endp
end debut
。この部分:
MOV ax, 0
MOV ax, cx
call putdec$
call newline
おそらく間違っていますが、私はそれをどうすればいいのかわかりません。
ご協力いただきますようお願い申し上げます。
ありがとうございました。あなたのアッカーマン関数は、実際にがを動作し、cx
レジスタにその結果を残し、そしてputdec$
はax
レジスタの値を出力し、あなたが示してきたそのコードセグメントと間違って何も絶対にありませんことをすると仮定すると