鱼C论坛

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

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

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

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

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

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

  5. data ends


  6. code segment


  7.    
  8.    start: mov dh,8     ;行循环
  9.           mov dl,3     ;列循环
  10.                   mov cl,2     ;cx_0颜色值
  11.                   mov ax,data ;把data的地址值给ax
  12.                   mov ds,ax ;ds:0->data
  13.                   mov si,0  ;ds:si->data[0]
  14.                   mov bx,0
  15.                   call  show_str
  16.                   
  17.                   mov ax,4c00h
  18.                   int 21h
  19. show_str:                                        ;mov bp,sp
  20.                                                        ; push dx  ;sp=sp-2  此时bp与sp相差2   
  21.                                                        ;push cx   ;保存颜色值 此时bp与sp相差4 疯了
  22.                   mov ax,0b80ah
  23.                   mov es,ax
  24.                   mov di,10h
  25.                   mov bx,0
  26.                   call printcol
  27.                     
  28.                   
  29. ret
  30. display:      mov cx,10h  ;cx=16
  31.                  mov si,0
  32.                                                        ;mov ax,ss:[bp-4];此处索引颜色值
  33. smem:     push ds:[si]
  34.                 pop es:[di+bx]              ;打入字符
  35.                 mov byte ptr es:[di+bx+1],2           ;打入颜色  无奈
  36.                 xor ax,ax
  37.                 inc si
  38.                 add di,2
  39.                   
  40.     loop smem
  41. ret

  42. printline:                                          ;mov dx,ss:[bp-2] ;索引列循环
  43.                 mov cx,3                              ;此处编译器让人很无奈,用Dl赋值就是不行
  44.                                                        ;mov dx,0
  45.       line:   push cx
  46.               call display
  47.                add bx,16                      ;填充空格
  48.                pop cx
  49.                   
  50. loop line         
  51. ret
  52. printcol:                                            ;mov dx,ss:[bp-2]               ;索引行循环
  53.              mov cx,8                                ;此处编译器让人很无奈,用Dh赋值就是不行
  54. printf:   push cx
  55.              call printline
  56.              add di,176                          ;换行
  57.              pop cx
  58.                  
  59. loop printf
  60. ret
  61. code ends
  62. end start      
复制代码

运行结果

运行结果

在栈中索引出错,一直无法正确执行,求高人指点一二
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

原来是我没理解题意,这样说来就简单了…… 但是用栈索引的问题还是没有解决,有没有高人可以指点一下呀?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-14 02:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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