assume cs:code,ds:data,ss:stack
data segment
dw 8 dup (0)
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
MOV AX,12666
mov si,0
call near ptr divdw
mov dh,3 ;定义第三行
mov dl,4 ;定义第三列
mov cl,00000010b ;显示效果为黑底绿字
CALL near ptr STRY
mov ax,4c00h
int 21h
divdw:
PUSH AX
mov ax,dx ;将被除数高16位存入AX,先进行高16位的运算
mov dx,0 ;被除数高16置0
mov cx,10 ;设置除数为10
DIV CX
MOV BX,AX ;高16位的商暂存BX
POP AX
DIV CX
PUSH DX ;最终算出的余数,压入栈中
MOV DX,BX
INC SI
MOV CX,AX
JCXZ OK
JMP DIVDW
OK: MOV CX,SI
MOV BX,0
OK1: POP AX
ADD AL,30H
MOV [BX],AL
INC BX
LOOP OK1
RET
STRY:
;显示字符数字到屏幕
MOV al,160
DEC DH
MUL DH
MOV BX,AX
DEC DL
MOV al,2
MUL DL
ADD BX,AX
MOV AX,0B800H
MOV ES,AX
MOV AH,CL
MOV CX,SI ;SI中放的是显示数据的总位数
MOV SI,0
STRY1: MOV AL,ds:[SI]
MOV ES:[BX],AL
MOV ES:[BX+1],AH
INC SI
add bx,2
LOOP STRY1
RET
code ends
END START |