有这样一段代码,当调整它们的顺序后,发生了不可思议的事!!!
本帖最后由 90182si 于 2017-12-19 21:04 编辑我在写王爽老师布置的课程设计一,其中的dtoc程序
dtoc:
push ax
push dx
push cx
push si
push di
mov si,0
tw: mov cx,10
call divdw
add cx,48;
push cx ;
or ax,dx
cmp ax,0
je ok;就是这四句,如果我把push cx后三句写到add cx,48之前就可以运行,但是有0就跳转了。
于是我先让cx入栈,判断ax,dx是否都为0再跳转,但事实上这样并不能运行,我不知道为什么。。求大佬解惑
inc si
jmp tw
ok: mov cx,si
of: pop ax
mov ,ax
inc di
loop of
pop di
pop si
pop cx
pop dx
pop ax
ret 真·标题党 13426913705 发表于 2017-12-19 21:15
真·标题党
我这不是为了有人能帮帮我嘛 {:301_1009:}所以你“并不能运行”的具体表现是什么,是编译报错还是运行到这里会停止。。。自己调试试试呗_(:з」∠)_监控着寄存器的变化 本帖最后由 fanvalen 于 2017-12-19 22:27 编辑
没有找到你说的设计一的出处,不过你可以百度搜王爽汇编第几版答案找到对应的章节查看
一些问题以及说明:
1
、
第一种思路的代码有错,无法得到正确的实验结果,我刚开始用的是第一种思路,
我想错误就在于寄存器的冲突的问题没有解决好。我便写了第二中思路的代码,
这个代码算是实验
7
和实验
9
的结合,先把要显示到屏幕上的那些数据以相同的
格式存放在
table
段中,然后直接将
table
段中的内容一个字节一个字节地复制到
显示缓冲区的偶地址上,
奇地址存放字符的颜色属性白色
07h
,
因此不用调用子程
序
show_str
。
2
、代码
2
的一个缺点是有可能造成内存空间资源浪费,因为比代码
1
多定义了一个
672
字节的内存空间。
优点是程序很清晰,
可以看成一块块的,
每块有不同的作用,
在用
debug
跟踪时,如果发现问题,比较方便进行查找。
页:
[1]