鱼C论坛

 找回密码
 立即注册
查看: 1742|回复: 6

谁帮我看看又哪错了 怎么没效果呢 实验10 第三题

[复制链接]
发表于 2013-9-3 09:49:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code
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,2
   call show_str
   mov ax,4c00h
   int 21h
dtoc:push si
     push cx
  push di
  
  push bx
  
     mov di,0
  s1:mov dx,0
     mov bx,10d
  div bx
  add dx,30H
  push dx
  inc di
  mov cx,ax
  jcxz ok1
  jmp s1
  ok1:mov cx,di
  s2:pop ds:[si]
     add si,2
  loop s2
  pop di
     pop cx
  pop si
  ret
  
      
show_str:push cx
         push si
      mov bx,0b800h
   sub dh,1
   mov al,dh
   mov ah,0ah
   mul ah
   add bx,ax
   mov es,bx
   mov al,2
   mul dl
   sub ax,2
   mov di,ax
   mov bl,cl
  s:mov cl,ds:[si]
    mov ch,0
    jcxz ok
  
    mov es:[di],cl
    mov es:[di+1],bl
    inc si
    add di,2
    jmp s
   ok: pop si
    pop cx
   
  ret
code ends
end start
  做了好几个实验了总是存在问题打消我积极性 我自己检查不出来哪里错了求帮助 谢谢了
  
  
  
   
   
   


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-3 21:21:19 | 显示全部楼层
本帖最后由 liangfei44 于 2013-9-3 21:23 编辑

没仔细看,你dtoc的push和pop没有完全配对!造成retn的时候,ip取到另一个栈地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-3 22:04:47 | 显示全部楼层
表示看不懂,不会,只是感到开头第二行和第三行,好相有点别扭,,楼下帮他看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-3 22:52:03 | 显示全部楼层
意见保留——
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-4 13:26:48 | 显示全部楼层
{:1_1:}顶。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-7 10:35:04 | 显示全部楼层
找到答案自己比对下吧,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-7 21:57:49 | 显示全部楼层
;name:dtoc
;function:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符
;参数:(ax)=word型数据;ds:si指向字符串的首地址
;返回:无
;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。

assume cs:code

data segment
        db 10 dup (0)
data ends

code segment
start:
        mov ax,12666     ;ax中存储了一个2进制数
        mov bx,data
        mov ds,bx                ;ds:si point data segment
        mov si,0
        call dtoc

        call show_string
       
        mov ax,4c00h
        int 21h
       
dtoc:
        mov dx,0
s:        mov bx,10
        div bx                        ;doing a 16bit division
        mov cx,dx
        jcxz ok
        add dl,30h
        mov [si],dl
        inc si
        mov dx,0
        mov cx,0
        jmp short s
       
ok: ret

show_string:
        mov bx,0b800h
        mov es,bx                        ;es:si定位显存
        mov bx,1286                        ;偶数位存储字符,基数位存储属性
        dec si
s1:        mov al,[si]
        mov cl,al
        mov ch,0
        jcxz ok1
        mov es:[bx],al
        mov dl,2
        inc bx
        mov es:[bx],dl
        dec si
        inc bx
        jmp s1
ok1:ret

code ends
end start
       
       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表