|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Zero_One 于 2012-5-7 22:25 编辑
- 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 ;定义es段为显存段地址
- MOV ES,AX
- MOV AH,CL ;将字体颜色存入AH
-
- 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
复制代码 麻烦高手们给看下,输出到屏幕的结果不对,单部调试没问题,除法运算时也没问题 |
|