- [huangbeidu] 哦 原来这样 07/05 22:27
- [游客] h回答正确。 07/02 08:18
- [游客] 每一个command窗口都是一个独立的模拟dos环境的,所以,关闭窗口后,这个环境就消失了,你在这个 07/02 08:12
- [huangbeidu] 有点不明白为什么关闭窗口后 再运行除法溢出的程序 还是老样子 怎么让它常驻内存? 07/02 00:15
- [huangbeidu] 是 SF应该是0的 06/05 02:20
- [tomato] Right! 05/31 18:19
- [tomato] 第一题的最后一条指令的答案写错了。建议上机验证一下。 05/31 18:18
- [huangbeidu] 这个是不算精简版的精简版了 代码是没有少多少 就是嫌以前的那个程序把数据段改成那样 在实际的操作中恐 05/14 17:29
- [游客] 可以参考前面的那个不会溢出的除法处理方式来想想这个程序怎么去支持dx为非0的数据显示,让显示的数据超 04/29 10:31
- [游客] 绝对有帮助。 04/28 11:47
[2009-04-26 16:28] 实验10.3 数值显示
assume cs:code,ds:data,ss:stack
stack segment
dw 16 dup (0)
stack ends
data segment
db 10 dup (0)
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,32
mov ax,12666;待显示的数字
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8 ;行
mov dl,3 ;列
mov ch,2 ;颜色属性
call show_str
mov ax,4c00h
int 21h
;***************
show_str:
push ax
push bx
push cx
push dx
push di
push si
mov ah,dh
mov al,160 ;一行160个Byte
mul ah
add dl,dl
mov dh,0
add ax,dx
mov bx,ax ;bx放第一个字符的偏移量
mov ax,0b800h
mov es,ax
mov di,0
mov dh,ch
s:
mov ch,dh
mov cl,[si]
mov es:[bx][di],cx ;写入显存
inc si
add di,2
mov ch,0
jcxz so
jmp s
so:
pop si
pop di
pop dx
pop cx
pop bx
pop ax
ret
;***************
;***************
dtoc:
push di
push si
push dx
push ax
push bx ;保存相关寄存器
mov bx,10
s1:
mov dx,0
div bx ;除以10求余数
add dl,30h ;十进制数码字符对应的ASCII码=十进制数码 值+30H
mov 4[si],dl ;word型数据最高五位数 ??????
mov cx,ax
jcxz ok
dec si ;???????????????
jmp s1
ok:
pop bx
pop ax
pop dx
pop si
pop di
ret
;*************
code ends
end start
将有???的两行改为mov [si],dl和inc si可以显示0~65535但前提是把待显示的数字倒过来写 -_-#……
[ huangbeidu 发表于 2009-04-26 19:35 ]
失误 倒过来写的话尾数不能为0 -_-!!
[ huangbeidu 发表于 2009-04-26 22:19 ]
“剽窃”了他人的算法 感觉不错 化为己用
现dtoc子程序更新如下:
;@@@@@@@@@@@@@@@
dtoc:
push di
push si
push dx
push ax
push bx
push cx ;保存相关寄存器
mov bx,10
s1:
mov dx,0
div bx ;除以10求余数
add dl,30h ;十进制数码字符对应的ASCII码=十进制数码值+30H
push dx
inc si ;用si来统计循环次数 即数字位数
mov cx,ax
jcxz ok
jmp s1
ok:
mov cx,si
mov si,0
s2:
pop dx
mov [si],dl
inc si
loop s2
pop cx
pop bx
pop ax
pop dx
pop si
pop di
ret
;@@@@@@@@@@@@@@@
以后这种颠来倒去的就用栈了 比mov来mov去的好用多了 更新后用数字1230测试 通过
[ wsrf 发表于 2009-04-27 17:18 ]
先按自己的想法实现,再去参考别人的代码,这样收获会更大。
[ 游客 发表于 2009-04-29 10:31 ]
可以参考前面的那个不会溢出的除法处理方式来想想这个程序怎么去支持dx为非0的数据显示,让显示的数据超过5位。