首页
社区
课程
招聘
[求助]一个简单的汇编题帮我看看那点错了?
发表于: 2009-8-3 15:34 5988

[求助]一个简单的汇编题帮我看看那点错了?

2009-8-3 15:34
5988
在DEBUG里也没找到错误,请不要给小弟写其他的思路,小弟就想知道我的哪一点错误了
对比起小弟不知道哦 呵呵 我想让显示12666 可是调试的时候正常就是 不能正常运行
我也知道另外一个方法可以实现这个效果 可是我就是想知道 我的这个程序哪一点错误了

assume cs:code,ds:data

data segment

        db 10 dup (0)

data ends

code segment

start:

        mov ax,12666 ;想让显示的数值

        mov bx,data

        mov ds,bx

        mov si,0

        call dtoc  ;调用数值显示的子程序

        mov dh,8    ;显示的行位置

        mov dl,3     ;显示的列位置

        mov cl,0cah  ;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性)

        call show_str  ;调用显示字符串的子程序

        mov ax,4c00h

        int 21h

dtoc:      ;数值显示的子程序定义
push ax
push si
push bx
push dx
push cx

mov bx,10
mov di,0
hao:mov cx,ax
jcxz hao2
div bx
add dx,30h
push dx
inc di
mov dx,0
jmp short hao
hao2:mov cx,di
hao1:pop dx
mov ds:[si],dl
inc si
loop hao1
pop cx
pop dx
pop bx
pop si
pop ax
ret

show_str:     ;显示字符串的子程序

        push bx

        push cx

        push si

        mov al,0A0h

        dec dh

        mul dh

        mov bx,ax

        mov al,2

        mul dl

        sub ax,2

        add bx,ax

        mov ax,0B800h

        mov es,ax

        mov di,0

        mov al,cl

        mov ch,0

s:      mov cl,ds:[si]

        jcxz ok

        mov es:[bx+di],cl

        mov es:[bx+di+1],al

        inc si

        add di,2

        jmp short s

ok:     pop si

        pop cx

        pop bx

        ret
code ends

end start

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
你说一下你的问题是什么,预期程序的行为是什么,实际的行为是什么,这样大家也好有目的地去看。

你光粘了些代码,连一行注释都没有,这不是给看的人找麻烦吗?

要学会提问。
2009-8-3 22:27
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
至少要吧你想实现的功能说出来,不然也没办法帮你,程序修改方式不同,结果差异很大
2009-8-3 22:32
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
看到了.
没错的话是那一点有错.
2009-8-3 22:35
0
雪    币: 1753
活跃值: (840)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
汇编不加注释~~
恐怕``.....
2009-8-4 00:42
0
雪    币: 257
活跃值: (28)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
奇怪了,debug调试几次又显示出结果2666了,前面的“1”没有显示。
2009-8-4 01:28
0
雪    币: 257
活跃值: (28)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
楼主的程序是不是想逐字符显示“12666”且伴随一声蜂鸣?
2009-8-4 02:52
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
对比起小弟不知道哦 呵呵 我想让显示12666 可是调试的时候正常就是 不能正常运行
我也知道另外一个方法可以实现这个效果 可是我就是想知道 我的这个程序哪一点错误了
2009-8-4 08:52
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
9
mov dx,0      <-   加上这一条试试
div bx
add dx,30h
push dx
inc di
mov dx,0
2009-8-4 09:08
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
汗 感谢大哥 解决了 太感谢了 原来是因为dx值放错地方了
2009-8-4 09:47
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
11
4楼不是乱讲的
2009-8-4 09:49
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
可是着两个位置都是清空dx的为什么 放在下面调试不出错可是不能显示 放在上面就可以显示了?大哥
2009-8-4 10:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
13
大哥哥..
除法指令是  dx.ax / bx
你当然要先将 dx 清除一下再除啊.
第一个byte 刚好没清,  你放下面..第1个byte除完了你才清.

你下面那条不用了. 变多余的了. 可以拿掉了.
2009-8-4 10:19
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
呵呵 是的 我已经给拿掉了 呵呵 是呀 这点犯迷糊了 吧除法指令格式给疏忽了
真是太感谢你了 你真是个大好人
2009-8-4 10:24
0
雪    币: 319
活跃值: (2404)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
15
王爽汇编里的一个题目
2009-8-4 10:28
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
是呀 呵呵 虽然网上有这题的答案但是我想按照自己的思路去写 不想按照网上的 呵呵
2009-8-4 10:47
0
游客
登录 | 注册 方可回帖
返回
//