30
mov al,10
add al,15

「 al 」の値を出力するにはどうすればよいですか?

4

10 に答える 10

34

int 21hサービス2を試しましたか? DL印刷する文字です。

mov dl,'A' ; print 'A'
mov ah,2
int 21h

整数値を出力するには、ループを記述して整数を個々の文字に分解する必要があります。値を 16 進数で出力しても問題ない場合、これは非常に簡単です。

DOS サービスに頼れない場合は、またはに設定してBIOSint 10hを使用することもできます。AL0Eh0Ah

于 2009-12-17T14:43:52.263 に答える
7

アセンブリ言語には、何かを直接出力する手段がありません。アセンブラには、そのような機能を提供するライブラリが付属している場合と付属していない場合があります。そうでない場合は、自分で作成する必要があり、非常に複雑な関数になります。また、印刷する場所を決定する必要があります。ウィンドウで印刷するか、プリンターで印刷するか。アセンブラーでは、これは何も行われません。

于 2009-12-17T14:28:12.893 に答える
1
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
于 2011-01-22T11:18:22.400 に答える
0
;        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
于 2014-04-04T21:36:43.890 に答える
0

Win32 API の MessageBoxA を呼び出すと、うまくいくかもしれませんが、Win16 がその特定のメソッドをサポートしているかどうかは、他の誰かが答える必要があります。

于 2009-12-17T14:46:16.767 に答える
-1

WinAPI 関数を呼び出す (win アプリケーションを開発している場合)

于 2009-12-17T14:26:31.773 に答える
-2
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
于 2013-08-22T20:15:38.933 に答える