高手抽空看一下。。。
时间:2010-12-01
来源:互联网
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
dw 32 dup(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc far
mov si,1
mov cx,0cb2h
s:mov ax,0cb2h
mov dx,0
div si
cmp dx,0
jne s1
mov bx,si
call tern
s1: inc si
loop s
finish:mov ax,4c00h
int 21h
main endp
tern proc
mov cx,10000
call dec_div
mov cx,1000
call dec_div
mov cx,100
call dec_div
mov cx,10
call dec_div
mov cx,1
call dec_div
mov ah,2
mov dl,0
int 21h;输出空格
ret
tern endp
dec_div proc
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30H
mov ah,2
int 21h;显示字符
ret
dec_div endp
CODES ENDS
END main
作者: liufenfangwan 发布时间: 2010-12-01
作者: shzhfu 发布时间: 2010-12-02
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
DW 32 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main PROC FAR
MOV SI,1
MOV CX,0cb2h
s:MOV AX,0cb2h
MOV DX,0
DIV SI
MOV DL,AH ;-----------------DIV后余数在AH中
CMP DX,0
JNE s1
MOV BX,SI
CALL tern
s1: INC SI
LOOP s
MOV AL,0
MOV AH,00h
INT 16h
finish:MOV AX,4c00h
INT 21h
main ENDP
tern PROC NEAR
PUSH CX ;-------------------保存现场
PUSH AX
PUSH DX
MOV CX,1000
CALL dec_div
MOV AX,BX
MOV CL,10
DIV CL
MOV BX,0
MOV BL,AL
MOV CX,100
CALL dec_div
MOV AX,BX
MOV CL,10
DIV CL
MOV BX,0
MOV BL,AL
MOV CX,10
CALL dec_div
MOV AX,BX
MOV CL,10
DIV CL
MOV BX,0
MOV BL,AL
MOV CX,1
CALL dec_div
MOV AH,2
MOV DL,32 ;----------------------空格的assiic是32
INT 21h;输出空格
POP CX
POP AX
POP DX
RET
tern ENDP
dec_div PROC NEAR
PUSH AX
PUSH DX
PUSH CX ;-------------------------保存现场
PUSH BX
MOV AX,BX
MOV DX,0
DIV CX
MOV DL,AL; ----------------------------商在al中
ADD DL,30H
MOV AH,2
INT 21h;显示字符
POP AX
POP DX
POP CX
POP BX
RET
dec_div ENDP
CODES ENDS
END main
作者: bobo98405208 发布时间: 2010-12-02
而且我在程序最后做了按键等待,不知道为什么我都没按键,程序就结束了,等待哪位大大来给我解释下
作者: bobo98405208 发布时间: 2010-12-02
#2楼考虑得反而复杂了。本来楼主的 dec_div 子程,用的就是 dx:ax/cx 啊,商和余数都是由 word 类的寄存器保存的,不会有商我 325 时的溢出问题。你这个代码,由于改动反而有了这个溢出问题,导致程序最后没有运行到等待输入那里就因溢出而结束了。
作者: zara 发布时间: 2010-12-02
作者: bobo98405208 发布时间: 2010-12-02
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
DW 32 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main PROC FAR
MOV SI,1
MOV CX,0cb2h
s:MOV AX,0cb2h
MOV DX,0
DIV SI
CMP DX,0
JNE s1
MOV BX,SI
CALL tern
s1: INC SI
LOOP s
MOV AH,0
INT 16h
finish:MOV AX,4c00h
INT 21h
main ENDP
tern PROC
PUSH CX
MOV CX,1000
CALL dec_div
MOV CX,100
CALL dec_div
MOV CX,10
CALL dec_div
MOV CX,1
CALL dec_div
MOV AH,2
MOV DL,0
INT 21h;输出空格
POP CX
RET
tern ENDP
dec_div PROC
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21h;显示字符
RET
dec_div ENDP
CODES ENDS
END main
作者: bobo98405208 发布时间: 2010-12-02
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28