0
두 개의 배열을 매개 변수로받는 어셈블리 8086에 서브 루틴을 작성하려고합니다. 어떻게해야합니까?8086에서 proc에 매개 변수 보내기
mov dl,[arr1]
mov dh, [arr2]
call adding
이 내 서브 루틴이다 : 내 코드는 지금까지입니다
adding proc
push ax
push bx
push cx
mov [arrx],dl
mov [arry],dh
mov cx, duplen
mov bx, cx ; point to lest significant digit!
dec bx
next_digit:
; add digits:
mov al, arrx[bx]
adc al, arry[bx]
; this is a very useful instruction that
; adjusts the value of addition
; to be string compatible
aaa
mov sum[bx], al
dec bx
loop next_digit
pop cx
pop bx
pop ax
ret
그것은 어떤 문제가 있습니까? 서브 루틴과
mov dl,[arr1]
mov dh, [arr2]
call adding
사용 뭔가 같은
mov si,arr1
mov di,arr2
call adding
대신에
당신은 * 그것으로 무엇이 잘못되었는지? * 당신이 무엇을하려고 않았다 무엇을 의미합니까 , 어떤 결과를 보았습니까? 그리고 무엇을 기대 했습니까? 참고로, 'AAA' 명령은 BCD (2 진화 10 진수) 숫자로 작업하기위한 것입니다. 그것은 연속적인 * nibbles * (4 비트 값 또는 반 바이트)의 각 십진수를 인코딩하는 숫자입니다. BCD를 사용하고 있습니까? – lurker
예, BCD를 사용하고 있습니다. 출력은 합계 값 대신에 모두 0입니다. arr1과 arr2 주소가 proc에 올바르게 전달되지 않았다고 생각합니다. @ lurker – user63835
좋습니다. 귀하의 게시물에서 귀하가 BCD를 사용하고 귀하의 결과가 무엇인지 분명하게 밝혀야합니다. 게시물을 편집하여 해당 작업을 수행 할 수 있습니다. – lurker