mov al,10
add al,15
「 al 」の値を出力するにはどうすればよいですか?
int 21h
サービス2を試しましたか? DL
印刷する文字です。
mov dl,'A' ; print 'A'
mov ah,2
int 21h
整数値を出力するには、ループを記述して整数を個々の文字に分解する必要があります。値を 16 進数で出力しても問題ない場合、これは非常に簡単です。
DOS サービスに頼れない場合は、またはに設定してBIOSint 10h
を使用することもできます。AL
0Eh
0Ah
アセンブリ言語には、何かを直接出力する手段がありません。アセンブラには、そのような機能を提供するライブラリが付属している場合と付属していない場合があります。そうでない場合は、自分で作成する必要があり、非常に複雑な関数になります。また、印刷する場所を決定する必要があります。ウィンドウで印刷するか、プリンターで印刷するか。アセンブラーでは、これは何も行われません。
PRINT_SUM PROC NEAR
CMP AL, 0
JNE PRINT_AX
PUSH AX
MOV AL, '0'
MOV AH, 0EH
INT 10H
POP AX
RET
PRINT_AX:
PUSHA
MOV AH, 0
CMP AX, 0
JE PN_DONE
MOV DL, 10
DIV DL
CALL PRINT_AX
MOV AL, AH
ADD AL, 30H
MOV AH, 0EH
INT 10H
PN_DONE:
POPA
RET
PRINT_SUM ENDP
; good example of unlimited num print
.model small
.stack 100h
.data
number word 6432
string db 10 dup('$')
.code
main proc
mov ax,@data
mov ds,ax
mov ax,number
mov bx ,10
mov cx,0
l1:
mov dx,0
div bx
add dx,48
push dx
inc cx
cmp ax,0
jne l1
mov bx ,offset string
l2:
pop dx
mov [bx],dx
inc bx
loop l2
mov ah,09
mov dx,offset string
int 21h
mov ax,4c00h
int 21h
main endp
end main
Win32 API の MessageBoxA を呼び出すと、うまくいくかもしれませんが、Win16 がその特定のメソッドをサポートしているかどうかは、他の誰かが答える必要があります。
WinAPI 関数を呼び出す (win アプリケーションを開発している場合)
mov al,3 ;print ♥
mov dl,al
;call print service(2) to print from dl
mov ah,2
int 21h
;return to DOS
mov ah,76 ;76 = 4ch
int 21h ;call interrupt