鱼C论坛

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

[学习笔记] 学到第10章了 突发奇想写个小程序 以作练习

[复制链接]
发表于 2019-10-18 10:25:31 | 显示全部楼层 |阅读模式

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

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

x
一天坐网吧里正刻苦‘学习’时,看见机箱里面的风扇周围有个光圈,白色的光圈里面有段红光在环绕,心想这肯定也是用汇编代码实现的,那是怎么实现的呢?
所以才有了第一次编写的汇编程序。
写的很粗糙的也很简单,但前几章能用的知识都用上了,感觉相对寻址很麻烦不能ds:[dx+di],段寄存器不能直接做运算很不灵活,判断语句更是麻烦,延迟完全不会精准到毫秒,很有很多很多的常量,剩下的就都是思路问题也没什么好抱怨得了
  1. assume cs:code,ds:data,ds:color,,ds:zuobiao,ss:sta
  2. data segment
  3. db'  a  '
  4. db' a a '
  5. db'a   a'
  6. db' a a '
  7. db'  a  '
  8. data ends
  9. color segment
  10. db 77 ;
  11. color ends
  12. zuobiao segment
  13. db 5,3,1,3,5,7,9,7,5 ;最低点1 最高点9 中间点5
  14. zuobiao ends
  15. sta segment ;作废,懒得写了
  16. db 16 dup (0)
  17. sta ends
  18. code segment
  19. start:
  20.                         mov ax,data
  21.                         mov ds,ax
  22.                         mov ax,color
  23.                         mov es,ax
  24.                         mov dl,es:[0]
  25.                         mov ax,0b872h
  26.                         mov es,ax
  27.                         mov cx,5
  28.                         mov bx,0
  29.                 s:
  30.                         push cx       
  31.                         mov cx,5
  32.                 f:
  33.                         mov al,[bx]
  34.                         mov es:[di],al
  35.                         inc bx
  36.                         inc di
  37.                         mov al,dl
  38.                         mov es:[di],al
  39.                         inc di
  40.                         loop f
  41.                        
  42.                         sub di,10
  43.                         add di,160
  44.                        
  45.                         pop cx
  46.                         loop s
  47.                         ;以上为建图
  48.                         ;--------------------------
  49.                         ;以下为光标循环
  50.                         mov ax,0;在栈内创建一个空间用来存 循环状态码
  51.                         push ax
  52.                         mov bp,sp
  53.                        
  54.                 all:mov di,0
  55.                         mov si,0
  56.                         mov ax,zuobiao
  57.                         mov ds,ax
  58.                         mov ax,0
  59.                         mov dx,0
  60.                        
  61. half:mov cx,4
  62.          fo:
  63.                    push cx
  64.                    mov ah,0
  65.                          mov al,ds:[si]
  66.                          add di,ax
  67.                          inc si
  68.                          mov byte ptr es:[di],byte ptr 77h;变白
  69.                          call de;延迟
  70.                         
  71.                          mov byte ptr es:[di],byte ptr 77 ;回复
  72.                          sub di,ax
  73.                         
  74.                          mov cx,ss:[bp]
  75.                         jcxz jia
  76.                          sub di,160 ;第一次运行该循环add向下 第二次运行sub向上
  77.                         
  78.         hui:pop cx
  79.                          loop fo
  80.                         
  81.                          inc dx        ;以除法取余判断单双次运行循环
  82.                          mov ax,dx
  83.                          mov dh,2
  84.                         div dh
  85.                         mov ss:[bp],ah
  86.                         mov dh,0
  87.                        
  88.                         mov cx,ss:[bp]
  89.                         jcxz all ;循环运行两次后从头再来
  90.                        
  91.                        
  92.                         jmp half ;循环第一次运行 从一半开始
  93.                        
  94.                         mov ax,4c00h;作废
  95.                         int 21h
  96.                        
  97.          jia:add di,160
  98.                         jmp hui
  99.                  
  100.          de:
  101.                          MOV BX,0FH
  102. D1:   MOV CX,0FFFFH
  103. D2:    LOOP D2
  104.             DEC BX
  105.             JNZ D1
  106.                         ret
  107.                
  108. code ends
  109. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-18 18:22:14 From FishC Mobile | 显示全部楼层
在网吧学习,你真吊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 18:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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