0

文字列を出力する方法を知っています。数値を出力するにはどうすればよいですか? Windowsアセンブラ6.11でMS DOSコンパイルを使用しています

これが私が試したことです。しかし、それはゴミを印刷します

以下のコメントに従ってコードを編集しました。

[編集]

DATA SEGMENT
NUM1 DW 0001H
NUM2 DW 0002H
SUM DW 2 DUP(0)
RESULT DW ?
 DATA ENDS

 CODE SEGMENT
 ASSUME CS:CODE,DS:DATA
 START: MOV AX,DATA
MOV DS,AX

MOV CX,00H
MOV AX,NUM1
ADD AX,NUM2
JNC DISPLAY

INC CX
MOV SUM+2,CX

 DISPLAY:
MOV SI,RESULT
ADD SI,9
MOV AX,0
MOV [SI],AX
MOV BX,10

 LOOP1:
XOR DX,DX
DIV BX
ADD DL,'0'
DEC SI
MOV [SI],DL
TEST AX,AX
JNZ LOOP1
MOV AX,SI
LEA SI,RESULT

MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H

 CODE ENDS
END START
4

1 に答える 1

0
DATA SEGMENT
NUM1 WORD 000AH
NUM2 WORD 000BH
SUM DW 2 DUP(0)
RESULT DB '        $'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:  MOV AX,DATA
MOV DS,AX

;-----begin addition-----------------
MOV CX,0000H
MOV AX,NUM1
ADD AX,NUM2
MOV SUM,AX
JNC DISPLAY

INC CX
MOV SUM+2,CX
;------Display on screen------------
DISPLAY:
LEA DI,RESULT
ADD DI,0007H
MOV AX,SUM
MOV BX,000AH    ;BX=10 used as a constatnt in the following loop
LOOP1:
XOR DX,DX
DIV BX      ;quotient in AX remainder in DX
ADD DX,0030H

DEC DI
MOV [DI],DL
TEST AX,AX  ;check if ax is 0
JNZ LOOP1

MOV AH,09H
MOV DX,OFFSET RESULT
INT 21H
;-----end the program--------------
MOV AH,4CH
INT 21H
CODE ENDS
END START
于 2013-11-26T10:45:57.907 に答える