2014-12-09 9 views
0

나는 레지스터 AX를 사용하여 곱셈을 시도하고 있습니다. 저는 ax = 1000 (3E8h)이고, 10을 곱합니다. mul 명령이 실행 된 후 ax에이 결과가 나타납니다. 910h는 2320 (기본 10)입니다. 2710h는 10000 (기본 10)이되어야합니다. 어떤 제안을 감상 할 수있다어셈블리의 곱셈 8086 잘못된 결과

assume cs:code, ds:data 
data segment 
    zece db 10 
data ends 
code segment 
start: 
    mov ax, data 
    mov ds, ax 
    mov dx, 0 
    mov ax, 3E8h 
    mul zece 
    mov ax, 4C00h 
    int 21h 
code ends 
end start 

:

여기 내 코드입니다.

답변

2

지침 mul에는 여러 가지 변형이 있습니다. 8 비트 메모리 객체를 곱하면 결과는 AL*[mem/8]입니다. 귀하의 경우에는 당신이 원하는 결과를 얻을 수

0xE8 * 0xA = 0x910 or 
232 * 10 = 2320 

변경 데이터 정의를 곱

data segment 
    zece dw 10 
data ends 
+0

와우, 감사합니다! 5 분 안에 받아 들일 것입니다. 그것은 작동합니다. – user1812076

+0

곱하기를 수행하기 전에 DX를 삭제할 필요가 없습니다. –