assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
s1: db 9,8,7,4,2,0
s2: db "// :: "
s: dw offset s1,offset s2
start:
mov si,offset s ;s数组的首地址==si
mov di,160*12+4*2
mov ax,stack
mov ss,ax
mov sp,10h
mov cx,6 ;分成了6对
aLoop: push cx
mov bx,cs:[si] ;s数组的第一个数据offset s1==bx
mov ax,cs:[bx] ;s1数组的第一个数据9==ax
mov ah,0 ;将高位清空 al==9
inc bx ;指向下一个数据8的地址
mov cs:[si],bx ;offset s1现在指向了8
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
mov bx,0b800h
mov es,bx
mov byte ptr es:[di],ah
add di,2
mov byte ptr es:[di],al
mov bx,cs:[si+2] ;s数组的第二个数据offset s2==bx
mov ax,cs:[bx] ;s2数组的第一个数据'/'==ax
mov ah,0 ;将高位清空 al=='/'
inc bx ;指向下一个数据另一个'/'的地址
mov cs:[si+2],bx ;offset s2现在指向了'/'
add di,2
mov byte ptr es:[di],al ;分界符/已经写到显存了
add di,2
pop cx
loop aLoop
mov ax,4c00h
int 21h
code ends
end start
汇编语言(第3版)实验14 访问CMOS RAM
最新推荐文章于 2022-10-18 23:38:04 发布