. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请各位朋友看看我的代码!求救!三天了.卡住了.实验10.3  [已解决] 回复[ 2次 ]   点击[ 319次 ]  
wsay666
[帖 主]   [ 发表时间:2009-07-26 23:07 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30
实验10.3,我花了三天时间,还是卡在这里,有几次想放弃它,都忍住了,朋友们,发扬一下友爱精神吧!看一看,错在哪里?两个子程序单独都运行正常,放在一起就什么也不显示了!!!!!!代码如下:
assume cs:code
data segment
        db 10 dup(0)
        data ends
stack segment
        db 32 dup(0)
        stack ends        
code segment
        start: mov ax,12666
        mov bx,data
        mov ds,bx
        mov bx,stack
        mov ss,bx
        mov sp,32
        mov si,0
        call dtoc
        mov dh,8
        mov dl,3
        mov cl,2
        call show_str
        mov ax,4c00h
        int 21h
        dtoc: push ax
        push si         ;PUSH两次SI的目的是,使下面的JCXZ循环条件成立.
        push si         ;这里取的是SI为0000,也可使用别的寄存器
        
        
dtoc1:         mov bx,10     ;用32位除法.
    mov dx,0
        div bx
        add dx,30h
        push dx            ;第一个字0036H入栈.
        mov cx,ax          ;商送CX
        jcxz ok1
        jmp short dtoc1
ok1: pop [si]      ;将栈中的字送入DS:SI
        mov cx,[si]        ;DS:SI送CX,以成为循环条件,直到把原SI内容弹出
        add si,2
        jcxz ok2
        jmp short ok1
ok2: pop ax
pop si
ret
show_str: push ax   ; 寄存器入栈。
push dx
push si
mov di,0            ;ES段初始
mov bx,0            
mov ax,0b800h
mov es,ax
mov al,160          ;至8行
mul dh
mov bx,ax           ;送入BX
mov dh,0
add bx,dx           ;至3列
add bx,dx
s:push cx           ;存CL值
mov ch,0
mov cx,ds:[si]      ;判断是否为0
jcxz ok
pop cx             ;弹出,以用到CL值即02H
mov ax,ds:[si]     ;AX作为中转
mov ah,cl          ;颜色属性送高位
mov es:[bx+di],ax  ;第一字母及属性送8行3列
    
add si,2
add di,2
jmp short s
ok:pop cx         ;jcxz过来后,莫忘POP CX
pop si
pop dx
pop ax
ret
code ends 
end start
younggay
[第1楼]   [ 回复时间:2009-07-27 10:47 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
去看看你的另一个帖子吧,是你显示函数的相关寄存器没有设置好的原因。
wsay666
[第2楼]   [ 回复时间:2009-07-27 17:57 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30
此贴由 贴主 于 [ 2009-07-27 17:57 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(younggay):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved