|
主题 : : 请高人指点第14章~~ [待解决] |
回复[ 4次 ]
点击[ 301次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-11-28 07:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-31 02:10 |
问题1:
检测点14.1 (2)
assume cs:code
code segment
start:
mov al,2 ;将2送入al
out 70h,al ;要取第2单元内容
mov al,0 ;将数字0送al
out 71h,al ;写入数字0,至此已完成写入0的任务,为什么还要下一句指令呢????
in al,71h ; (请高人指点多这句指令的意思)为什么还要读出2号单元的内容,是否多余
mov ax,4c00h
int 21h
code ends
另帮我解释下为什么后章提到的键盘的端口那么多的信息只要一个端口就够了,而简单的cmos rom却要2个端口,一个地址,一个数据?,是否地址端口只能用out指令?
问题2:
14.3 shl和shr指令 (文章正文部分)
mov al,01010001b
mov cl,3
shl al,cl
执行后al=10001000b cf=0
接着下面提到左移1位相当于*2
就这个例题而言:
左移一位等于*2
左移2位 cf=1表示溢出,表示结果不正确
请问连着左移3位,cf=0即没有表示溢出,结果又不正确,如果在以后的编程中用它做乘法,溢出不溢出也不知道,结果正确不正确也不知道,是不是很麻烦啊
问题3:
14.4 coms ram中存储的时间信息 (文章正文部分)
在coms ram中,存放着当前的时间:年,月,日,时,分,秒,这6个信息的长度都为1个字节,存放单元为:
秒:0 分:2 时:4 日:7 月:8 年9
这些数据都是以bcd码方式存放的,
59秒可用1个字节2个bcd码表示
59分可用1个字节2个bcd码表示
24时可用1个字节2个bcd码表示
31日可用1个字节2个bcd码表示
12月可用1个字节2个bcd码表示
请问:2009年可用1个字节2个bcd码表示吗??
coms记录的好像是2009年吧,不是09年吧,
小弟初学,问题都很愚昧,希望高手们不要嘲笑,给我指点迷津,我感激不尽,谢谢 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-11 01:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48 |
ASSUME CS:CODES
CODES SEGMENT
s1:db 9,8,7,4,2,0
s2:db "/","/"," ",":",":","$"
START:mov ax,cs
mov si,offset s1
mov bx,offset s2
MOV ax,0b800h
mov es,ax
mov di,20*160+28*2
mov dl,11001010b
s:mov ch,cs:[bx]
mov al,cs:[si]
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 es:[di],ah
mov es:[di+1],dl
mov es:[di+2],al
mov es:[di+3],dl
mov es:[di+4],ch
mov es:[di+5],dl
cmp ch,"$"
je ok
inc bx
inc si
add di,6
jmp s
ok:mov ch,0
mov es:[di+4],ch
MOV AH,4CH
INT 21H
CODES ENDS
END START | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-11 02:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48 |
颜色不对了 在最OK:出加上
mov dl,0000000b
mov es:[di+5],dl | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-12-11 02:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48 |
又该了下 这回好拉
ASSUME CS:CODES
CODES SEGMENT
s1:db 9,8,7,4,2,0
s2:db "/","/"," ",":",":","$"
START:mov ax,cs
mov si,offset s1
mov bx,offset s2
MOV ax,0b800h
mov es,ax
mov di,20*160+28*2
mov dl,11001010b
s:mov ch,cs:[bx]
mov al,cs:[si]
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 es:[di],ah
mov es:[di+1],dl
mov es:[di+2],al
mov es:[di+3],dl
mov es:[di+4],ch
cmp ch,"$"
je ok
mov es:[di+5],dl
inc bx
inc si
add di,6
jmp s
ok:mov ch,0
mov es:[di+4],ch
MOV AH,4CH
INT 21H
CODES ENDS
END START | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-12-11 02:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48 |
再次更改 :)
ASSUME CS:CODES
CODES SEGMENT
s1:db 9,8,7,4,2,0
s2:db "/","/"," ",":",":","$"
START:mov ax,cs
mov si,offset s1
mov bx,offset s2
MOV ax,0b800h
mov es,ax
mov di,20*160+28*2
mov dl,11001010b
s:mov ch,cs:[bx]
mov al,cs:[si]
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 es:[di],ah
mov es:[di+1],dl
mov es:[di+2],al
mov es:[di+3],dl
cmp ch,"$"
je ok
mov es:[di+4],ch
mov es:[di+5],dl
inc bx
inc si
add di,6
jmp s
ok:MOV AH,4CH
INT 21H
CODES ENDS
END START | | |
|