leader4 发表于 2018-5-30 17:50:22

《王爽汇编》实验14

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

虽然越来越难了,但感觉反而是写的越来越顺利了。
甚至翻回看之前自己遇到的难点,也都算不上是难点了。
总算感觉有一点入了编程的门了。
这个实验虽然仍旧没有一次编译通过,但大思路是没有任何问题的~
而且在编写过程中,发现需要写大量重复代码时,意识到可以使用之前例题里的方法减少书写量,一下大大缩减了代码量{:10_275:}
这种会了的感觉真爽~{:10_277:}
;要求:以“年/月/日 时:分:秒”的格式显示当前日期。
;         987420
;思路:从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,
        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:,ah
        mov es:,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:
        jcxz lp_end
        mov al,es:
        mov byte ptr ,al
        mov al,es:
        mov byte ptr ,al

        add di,2
        add si,4
        jmp short lp_start

lp_end:
        mov ax,4c00h
        int 21h
code ends
end start

秋雪冬枫 发表于 2018-8-21 15:46:25

为什么显示这段程序里面,si的增量为4

孤影09 发表于 2019-3-18 08:51:05

为啥那里si要加4?好像没用到si吧???

装糊涂 发表于 2019-12-12 09:48:50

数据段两个两个的放 di为2,si为4;但是为啥不一个一个放
页: [1]
查看完整版本: 《王爽汇编》实验14