Adele-_Someone_ 发表于 2013-9-3 09:49:35

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

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:
   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:
    mov ch,0
    jcxz ok

    mov es:,cl
    mov es:,bl
    inc si
    add di,2
    jmp s
   ok: pop si
    pop cx
   
ret
code ends
end start
做了好几个实验了总是存在问题打消我积极性 我自己检查不出来哪里错了求帮助 谢谢了



   
   
   


liangfei44 发表于 2013-9-3 21:21:19

本帖最后由 liangfei44 于 2013-9-3 21:23 编辑

没仔细看,你dtoc的push和pop没有完全配对!造成retn的时候,ip取到另一个栈地址。

qq74330 发表于 2013-9-3 22:04:47

表示看不懂,不会,只是感到开头第二行和第三行,好相有点别扭,,楼下帮他看看吧

欠你的幸福 发表于 2013-9-3 22:52:03

意见保留——

shi_1236 发表于 2013-9-4 13:26:48

{:1_1:}顶。。。。

怡静 发表于 2013-9-7 10:35:04

找到答案自己比对下吧,

??? 发表于 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 ,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,
        mov cl,al
        mov ch,0
        jcxz ok1
        mov es:,al
        mov dl,2
        inc bx
        mov es:,dl
        dec si
        inc bx
        jmp s1
ok1:ret

code ends
end start
       
       
页: [1]
查看完整版本: 谁帮我看看又哪错了 怎么没效果呢 实验10 第三题