. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  求助!我的课程设计有个很棘手的问题  [已解决] 回复[ 2次 ]   点击[ 411次 ]  
minghunjason
[帖 主]   [ 发表时间:2009-10-14 17:14 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
题目是:输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形
assume cs:code,ss:stack,ds:data

stack segment 
     db 20 dup(0)
stack ends

data segment
    dw  5 dup(0)
    str db 'please input chang:',0dh,0ah,'$'
    srr db 'please input kuan:',0dh,0ah,'$'
data ends

code segment 

  start:mov ax,data
        mov ds,ax 
        mov bx,0
        mov ax,0  
        call showy 
        call shuru
        call showx
        add bx,2
        call shuru
        mov bx,0
        call jisuan
        call xianshi
        mov ax,4c00h
        int  21h
  
shuru:mov ah,1
        int 21h
        sub al,30h
        mov ah,0
        mov ds:[bx],ax     ;这里有个问题,明明ax是放在地上ds:[bx]里面,bx为0,为什么数据
        ret                ;在bx+120才找的到
        
 jisuan:mov di,ds:[bx+120]     ;然后这个子程序是进行计算的,有问题后就删了,直接赋个数值  
        mov si,ds:[bx+122]      ;但是下面的值还是传不过去
        ret
  showy: mov ah,9
         lea dx,str
         int 21h 
         ret
 showx:  mov ah,9
         lea dx,srr
         int 21h 
         ret
xianshi: ;mov di,6             ;这个子程序是画出菱形,其中有两个重要的数据要接受分         ;mov si,2            di和si里面
         mov ah,2           ;问题就在这里,这两个值在前面的子程序计算出来,不知道为什么在执行
         mov bh,0           ;这个子程序时,值并没有传过来。而在子程序里加入mov di,6mov si,2
         mov dh,1           ;又能画出菱形
         mov dl,40
         int 10h
         mov ah,9
         mov al,'*'
         mov bl,11001010b
         mov bh,0
         mov cx,1
         int 10h 
         mov cx,di
         mov bp,cx
      s2:mov cx,di
         mov ax,si
         add dh,al
         mov ah,2
         dec bp
         push bp
         sub cx,bp
         mov dl,40
         sub dl,cl
         mov bh,0
         int 10h
         mov ah,9
         mov al,'*'
         mov bl,11001010b
         mov bh,0
         mov cx,1
         int 10h
         pop bp
         mov cx,bp
         jcxz jixu
         loop s2
    jixu:mov bp,1
         mov cx,di
         dec cx
      s3:mov ax,si
         mov bh,0
         add dh,al
         mov ah,2
         push cx
         mov cx,bp
         add dl,cl
         int 10h
         mov ah,9
         mov al,'*'
         mov bl,11001010b
         mov bh,0
         mov cx,1
         int 10h
         pop cx
         jcxz zaixu
         loop s3
   zaixu:mov bp,1
         mov cx,di
         dec cx
      s4:mov ax,si
         mov bh,0
         sub dh,al
         mov ah,2
         push cx
         mov cx,bp
         add dl,cl
         int 10h
         mov ah,9
         mov al,'*'
         mov bl,11001010b
         mov bh,0
         mov cx,1
         int 10h
         pop cx
         jcxz houxu
         loop s4
   houxu:mov bp,1
         mov cx,di
         dec cx
      s5:mov ax,si
         mov bh,0
         sub dh,al
         mov ah,2
         push cx
         mov cx,bp
         sub dl,cl
         int 10h
         mov ah,9
         mov al,'*'
         mov bl,11001010b
         mov bh,0
         mov cx,1
         int 10h
         pop cx
         jcxz jieshu
         loop s5
   jieshu:ret
code ends
end start
alabo886
[第1楼]   [ 回复时间:2009-10-20 23:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-09 19:25
兄弟,能不能多来点注释呀!眼睛都看花喽!
minghunjason
[第2楼]   [ 回复时间:2009-10-21 17:55 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
此贴由 贴主 于 [ 2009-10-21 17:55 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved