0
アセンブリコードに問題があります。このコードをデバッグするたびに、ディビジョンオーバーフローは常にエラーです。 AXの値が2桁のみの場合、コードはスムーズに実行されます。アセンブリ言語 - ディビジョンオーバーフロー(4桁)
4桁の値で除算を行うには、どのような変更が必要ですか?ありがとう。あなたが行うと
ASSUME DS:DATA, CS:CODE
DATA SEGMENT
X DW 0
Y DW ?
s DB "The aswer is", 0
Z DW 4
DATA ENDS
CODE SEGMENT
MAIN PROC
MOV DS:[Y],23
MOV AX,[Y]
ADD AX,4556
MOV [X],AX
PUSH[X]
CALL WRITE
POP[X]
MOV AH,4CH
INT 21H
MAIN ENDP
WRITE PROC
PUSH BP
MOV BP,SP
MOV AX,0B800H
MOV ES,AX
MOV ES,AX
MOV DI,5*160
MOV AX,[BP+4]
MOV BL,10
DIV BL
ADD AL,'0'
STOSB
XCHG AH,AL
ADD AL,'0'
STOSB
MOV AL, 00001111B
STOSB
POP BP
RET
WRITE ENDP
CODE ENDS
END MAIN
alとahを同時に実行するには、 'ax、 '00''(または' 3030h')を追加できます。次に、それらを一度に格納するために 'stosw'することができます。そして、最初に 'AL'に値を入れるのではなく' movバイトptr [di]、00001111B'を実行することができます。 –