?? prtint16.asm
字號:
;程序模板
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0) ;初始化堆棧大小為100
SSEG ENDS
DSEG SEGMENT
;數據段:在此處添加程序所需的數據
DSEG ENDS
ESEG SEGMENT
;附加段:在此處添加程序所需的數據
ESEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG, es:ESEG, ss:SSEG
MAIN PROC ;主程序入口
mov ax, dseg
mov ds, ax
mov es, ax
;此處添加主程序代碼
mov ax, -2504
CALL PrtInt16
MOV AH, 01H
INT 21H
mov ax, 4c00h ;程序結束,返回到操作系統系統
int 21h
MAIN ENDP
;打印16位整數的函數, 參數放在AX中
PrtInt16 PROC
MOV CX, 0
CMP AX, 0
JG greater0
JZ equal0
JL less0
greater0:
jmp signDealEnd
equal0:
jmp signDealEnd
less0:
PUSH AX
MOV DL, '-'
MOV AH, 02H
INT 21H
POP AX
NOT AX ; 取反加1得相反數
INC AX
jmp signDealEnd
signDealEnd:
MOV BX, 10
nextAX:
MOV DX, 0
DIV BX ;除以十
PUSH DX ;余數放在DL中 (壓棧保存)
INC CX
CMP AX, 0
JNZ nextAX
; 下面依次從棧中彈出并打印數字
CLD
nextCX:
CMP CX, 0
JZ prtStkEnd ;為0表示打印結束
POP DX ;打印棧頂
ADD DL, '0'
MOV AH, 02H
INT 21H
DEC CX
JMP nextCX
prtStkEnd:
ret
PrtInt16 ENDP
CSEG ENDS
END MAIN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -