鱼C论坛

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

[争议讨论] 零基础入门汇编 第十章 实验10-1作业讨论

[复制链接]
发表于 2013-6-16 00:22:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ┈━═☆佳佑 于 2013-6-16 00:34 编辑

终于今天一天做了第一道题了   希望论坛的大侠给出意见  能助小生更快 更正规的入门汇编
求语法排版等 小技巧等宝贵意见  小生在此叩谢啦


assume cs:code
data segment
            db 'welcome to masm!'
            db 16 dup (0)                                  ;定义16字节 做显示字符串 扩展使用
            dw 25 dup (2)                                  ;定义25字   存放 25行显示偏移地址 由dh调用
     data ends

stack segment
            db 16 dup (0)
    stack ends


code segment
        start:  mov    dh,2                                  ;显示行(0-24)
                  mov    dl,15                                 ;显示列(0-79)
                  mov    cl,113                               ;字符串颜色(1蓝 2绿 4 7黑底白字 66红底绿字 113白底蓝字)
     
                  mov    ax,data
                  mov    ds,ax
                  mov    si,0                                     ;ds:si =data段首地址
     
                  mov    ax,0b800h   
                  mov    es,ax  
                  mov    di,0                                     ;显示段 第一页显示      
     
                   mov    ax,stack
                   mov    ss,ax
                   mov    sp,16                                 ;建立空栈 sp指向栈底
     
                  push    cx
                  mov     cx,25
           s:     mov     ax,di
                  mov     ds:[si+20H],ax
                 inc        si
                 inc        si
                 add      di,160
                 loop     s                                         ;25行显示地址  存入内存
                 pop      cx
     
                 call       show_str                            ; 标号 show_str =show string 显示字符串
                  mov     ax,0100h
                    int        21h
  

  show_str:  mov     si,0                                    ; 标号 show_str =show string 显示字符串
                   mov     bp,0
                   mov     ax,0
                   mov     bx,cx
            s0:   mov     bh,ds:[si]
                   mov     cl,bh                                  ;取data段中要显示的字符
                   mov     ch,0
                                      
                   mov     ax,2                                     ;行(dh)=(ds:dh*2+20h)
                   mul      dh
                   mov     di,ax
                   mov     di,ds:[di+20H]                     ;取得行在data段的地址
                   mov     ax,2
                   mul     dl                                           ;列(dl)=(dl*2)
                   add     di,ax                                      ;算出列地址
                   mov    es:[bp+di],bh                        ;显示字符串 所在行列
                   mov    es:[bp+di+1],bl                     ;显示颜色
                   inc      si
                   inc      bp
                   inc      bp
                   jcxz     ok
                   loop    s0
     
     
             ok: ret
code ends
end start

01.jpg 02.jpg







想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 09:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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