鱼C论坛

 找回密码
 立即注册
查看: 3559|回复: 3

[学习笔记] 《王爽汇编》实验14

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

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

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

x
本帖最后由 leader4 于 2018-5-30 17:52 编辑

虽然越来越难了,但感觉反而是写的越来越顺利了。
甚至翻回看之前自己遇到的难点,也都算不上是难点了。
总算感觉有一点入了编程的门了。
这个实验虽然仍旧没有一次编译通过,但大思路是没有任何问题的~
而且在编写过程中,发现需要写大量重复代码时,意识到可以使用之前例题里的方法减少书写量,一下大大缩减了代码量
这种会了的感觉真爽~
;要求:以“年/月/日 时:分:秒”的格式显示当前日期。
;         9  8  7  4  2  0
;思路:从CMOS RAM取数据放入内存,从内存统一写入显存
;
assume cs:code


table segment
        db 'yy/mm/dd hh:mm:ss',0
table ends

code segment

site:        db 9,8,7,4,2,0
start:
        mov ax,cs
        mov ds,ax
        mov si,offset site

        mov ax,table
        mov es,ax
        mov di,0

        mov cx,6
ok:        
;取数据
        push cx
        mov al,[si]
        out 70h,al
        in al,71h

;加工数据
;十位
        mov ah,al
        mov cl,4
        shr ah,cl
;个位
        and al,00001111b
;ascii化
        add ah,30h
        add al,30h
;写入内存
        mov es:[di],ah
        mov es:[di+1],al

        inc si
        add di,3
        pop cx
        loop ok

;写入显存
        mov ax,0b800h
        mov ds,ax
        mov si,0
        mov di,0

lp_start:
        mov cx,es:[di]
        jcxz lp_end
        mov al,es:[di]
        mov byte ptr [si+160*12+30*2],al
        mov al,es:[di+1]
        mov byte ptr [si+160*12+30*2+2],al

        add di,2
        add si,4
        jmp short lp_start

lp_end:
        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-21 15:46:25 | 显示全部楼层
为什么显示这段程序里面,si的增量为4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 08:51:05 From FishC Mobile | 显示全部楼层
为啥那里si要加4?好像没用到si吧???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-12 09:48:50 | 显示全部楼层
数据段两个两个的放 di为2,si为4;但是为啥不一个一个放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 03:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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