鱼C论坛

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

[争议讨论] 实验九,只要35行代码!有点投机取巧,大家看下是否很讲效率?

[复制链接]
发表于 2012-7-9 01:51:28 | 显示全部楼层 |阅读模式

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

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

x
assume cs:code,ds:data,ss:stack
        data segment
                db'welcome to masm!'        ;定义要显示的字符串(共16字节)
                db 02h,24h,71h        ;定义颜3种色属性
        data ends
        stack segment
                dw 1 dup(0)         ;定义栈段,用于存放外层循环礐CX的值
        stack ends
        code segment
start:        mov ax,data                ;获取定义好的字符串的Ascii码在内存中的起始段地址
                mov ds,ax
                mov ax,stack        ;获取栈段的起始段
                mov ss,ax
                mov ax,0b872h ;定义要把数据写入显存的起始段地址
                mov es,ax
                xor si,si        ;用做索引颜色属性的偏移地址
                xor di,di        ;用做索引要写入数据的显存的偏移地址
                mov cx,3h        ;循环3次,定义3次颜色属性和3次依次把定义好的字符串的Ascii码写入显存
        s1:        push cx         ;把外层循环次数压进栈,以备等下能恢复,避免内层循环改变外层循环的次数
                mov ah,ds:10h[si]        ;把颜色属性值放进AH寄存器中
                inc si        ;索引颜色属性的偏移地址自增1
                xor bx,bx        ;清空BX寄存器中的值,用于索引定义的字符串的Ascii码在内存中的偏移地址
                mov cx,10h        ;循环16次,依次把定义好的字符串的Ascii码写入显存
        s:        mov al,[bx]         ;把定义的字符串的Ascii码依次放入AL寄存器中
                mov es:[di],ax        ;把AX寄存中的字符Ascii码和颜色属性写进显存中
                inc bx                ;所以定义好的字符串的Ascii码在内存中的偏移地址自增1
                add di,2        ;索引显存的偏移地址增加2
                loop s
                pop cx                ;恢复外层循环的CX循环次数的值
                add di,80h                ;显存中的地址加128个字节,使地址指向第二行需要写入定义好的字符的起始位置
                loop s1
                mov ax,4c00h
                int 21h
        code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-9 08:50:31 | 显示全部楼层
用了一些这个实验前没学到的代码,有点不对味道,况且39行是多了,我写的是大概30行 http://bbs.fishc.com/thread-19400-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-28 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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