鱼C论坛

 找回密码
 立即注册
查看: 2368|回复: 0

[学习笔记] 《王爽汇编》第十章实验10-1

[复制链接]
发表于 2018-5-17 22:36:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 leader4 于 2018-5-17 22:36 编辑

用了一下午才写出来,但不知为何,实际结果却差了一行。
后来查看相关寄存器,发现显存起始地址变成了B80A0,而不是B8000。不知道为什么。。。
个人能力有限,实在不知道原因。所以先记录一下,以后再去排查。
如果有大牛知道原因,还望指点一下。

  1. ;说明:在指定位置,用指定颜色,显示一个用0结束的字符串。
  2. ;参数:(dh)=行号(取值范围0~24),(dl)=列好(取值范围0~79),
  3. ;           (cl)=颜色,ds:si指向字符串的首地址
  4. ;结果:无返回
  5. ;举例:8行3列处,显示绿字。

  6. assume cs:code,ss:stack,ds:data

  7. data segment
  8.         db 'Welcome to masm!',0
  9. data ends

  10. stack segment
  11.         dw 8 dup (0)
  12. stack ends

  13. code segment
  14. start:        mov dh,8
  15.                 mov dl,3
  16.                 mov cl,2
  17.                 mov si,0
  18.                 mov ax,data
  19.                 mov ds,ax
  20.                 mov ax,stack
  21.                 mov ss,ax
  22.                 mov sp,16
  23.                
  24.                 call show_str

  25.                 mov ax,4c00h
  26.                 int 21h
  27. show_str:
  28.                 dec dh
  29.                 dec dl

  30.                 ;计算行号
  31.                 mov al,dh
  32.                 mov bl,160
  33.                 mul bl
  34.                 push ax

  35.                 ;计算列号
  36.                 mov al,dl
  37.                 mov bl,2
  38.                 mul bl
  39.                 push ax

  40.                 ;显示位置第一点
  41.             mov bx,8000H
  42.                 mov bp,sp
  43.                 add bx,[bp]
  44.                 add bx,[bp+2]

  45.                 mov ax,0b000H
  46.                 mov es,ax

  47.                 ;向指定内存位置写入数据
  48.         wr:        mov al,ds:[si]
  49.                 mov es:[bx],al
  50.                 mov es:[bx+1],cl
  51.                 mov ch,0
  52.                 push cx
  53.                 mov cl,ds:[si]
  54.                 jcxz ok
  55.                 pop cx
  56.                 inc si
  57.                 add bx,2
  58.                 jmp        short wr

  59.                 ok:pop cx
  60.                pop ax
  61.                    pop ax
  62.                    ret

  63. code ends
  64. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 19:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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