. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请高人指点第14章~~  [待解决] 回复[ 4次 ]   点击[ 301次 ]  
a30745006
[帖 主]   [ 发表时间: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年吧,
小弟初学,问题都很愚昧,希望高手们不要嘲笑,给我指点迷津,我感激不尽,谢谢
tlzbl
[第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
tlzbl
[第2楼]   [ 回复时间:2009-12-11 02:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48
颜色不对了  在最OK:出加上
mov dl,0000000b
mov es:[di+5],dl
tlzbl
[第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
tlzbl
[第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
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved