鱼C论坛

 找回密码
 立即注册
查看: 2074|回复: 1

[汇编作业] 第十章实验10,求高人指点迷津

[复制链接]
发表于 2014-5-19 10:24:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 decoder 于 2014-5-19 10:30 编辑
assume cs:code 
data segment
   
   db 'Welcome to masm!',0

data ends


code segment


   
   start: mov dh,8     ;行循环
          mov dl,3     ;列循环
                  mov cl,2     ;cx_0颜色值
                  mov ax,data ;把data的地址值给ax
                  mov ds,ax ;ds:0->data
                  mov si,0  ;ds:si->data[0]
                  mov bx,0
                  call  show_str
                  
                  mov ax,4c00h
                  int 21h
show_str:                                        ;mov bp,sp
                                                       ; push dx  ;sp=sp-2  此时bp与sp相差2   
                                                       ;push cx   ;保存颜色值 此时bp与sp相差4 疯了
                  mov ax,0b80ah
                  mov es,ax
                  mov di,10h
                  mov bx,0
                  call printcol
                    
                  
 ret
display:      mov cx,10h  ;cx=16
                 mov si,0
                                                       ;mov ax,ss:[bp-4];此处索引颜色值
 smem:     push ds:[si]
                pop es:[di+bx]              ;打入字符
                mov byte ptr es:[di+bx+1],2           ;打入颜色  无奈
                xor ax,ax
                inc si
                add di,2
                  
    loop smem
ret

printline:                                          ;mov dx,ss:[bp-2] ;索引列循环
                mov cx,3                              ;此处编译器让人很无奈,用Dl赋值就是不行
                                                       ;mov dx,0
      line:   push cx
              call display
               add bx,16                      ;填充空格
               pop cx
                  
loop line         
ret 
printcol:                                            ;mov dx,ss:[bp-2]               ;索引行循环
             mov cx,8                                ;此处编译器让人很无奈,用Dh赋值就是不行
printf:   push cx
             call printline
             add di,176                          ;换行
             pop cx
                 
loop printf
ret
code ends
end start      

运行结果

运行结果

在栈中索引出错,一直无法正确执行,求高人指点一二
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-19 10:59:01 | 显示全部楼层
本帖最后由 decoder 于 2014-5-19 11:00 编辑

原来是我没理解题意,这样说来就简单了…… 但是用栈索引的问题还是没有解决,有没有高人可以指点一下呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-1 00:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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