鱼C论坛

 找回密码
 立即注册
查看: 2553|回复: 8

[技术交流] 总算把实验十四搞定了,嘿嘿

[复制链接]
发表于 2012-2-29 17:15:22 | 显示全部楼层 |阅读模式

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

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

x
ASSUME CS:CODE
CODE SEGMENT
S DB 9,8,7,4,2,0
START:
  MOV AX,CS
  MOV DS,AX
  MOV SI,OFFSET S
  MOV DI,160*12+40*2
  MOV CX,3
S1:
  PUSH CX
  MOV AX,[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 BX,0B800H
  MOV ES,BX
  MOV BYTE PTR ES:[DI],AH
  MOV BYTE PTR ES:[DI+1],2
  MOV BYTE PTR ES:[DI+2],AL
  MOV BYTE PTR ES:[DI+3],2
  POP CX
  CMP CX,1
  JE S2
  MOV BYTE PTR ES:[DI+4],'/'
  MOV BYTE PTR ES:[DI+5],2
S2: INC SI
  ADD DI,6
  LOOP S1
  MOV BYTE PTR ES:[DI],' '
  
  MOV CX,3
S3:
  PUSH CX
  MOV AX,[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 BX,0B800H
  MOV ES,BX
  MOV BYTE PTR ES:[DI+2],AH
  MOV BYTE PTR ES:[DI+3],2
  MOV BYTE PTR ES:[DI+4],AL
  MOV BYTE PTR ES:[DI+5],2
  POP CX
  CMP CX,1
  JE OK
  MOV BYTE PTR ES:[DI+6],':'
  MOV BYTE PTR ES:[DI+7],2
OK:
  NOP
  INC SI
  ADD DI,6
  LOOP S3
  
  MOV AX,4C00H
  INT 21H
CODE ENDS
END START
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-29 17:16:22 | 显示全部楼层
希望大家晒晒自己的程序,我的程序有点愚笨,希望有更简洁版的版本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-1 17:37:19 | 显示全部楼层
本帖最后由 梦想飞扬 于 2012-3-1 18:47 编辑

定义两个段db '00/00/00 00:00:00'
               db 9,8,7,4,2,0
先把时间数据存储到前一个段中,再复制到显存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-2 11:42:06 | 显示全部楼层
这位兄弟,你的这个方法好是好,但是你不觉得这样多做了一步吗?(多做了复制这一步)不如直接将时间写入显存,这样不是更好吗?你看?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-2 14:36:38 | 显示全部楼层
ASSUME CS:CODE
CODE SEGMENT
S DB 9,8,7,4,2,0
S0 DB '00/00/00 00:00:00'
START:
  MOV AX,CS
  MOV DS,AX
  MOV SI,OFFSET S
  MOV DI,OFFSET S0
  MOV CX,3
S1:
  PUSH CX
  MOV AL,DS:[SI]
  MOV AH,0
  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 DS:[DI],AH
  MOV DS:[DI+1],AL
  ADD DI,3
  INC SI
  POP CX
  LOOP S1

  MOV CX,3
S2:
  PUSH CX
  MOV AL,DS:[SI]
  MOV AH,0
  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 DS:[DI],AH
  MOV DS:[DI+1],AL
  ADD DI,3
  INC SI
  POP CX
  LOOP S2
  
  MOV BX,0B800H
  MOV ES,BX
  MOV DI,160*12+40*2
  MOV SI,OFFSET S0
  
  MOV CX,17
S3:
  MOV BYTE PTR AL,DS:[SI]
  MOV BYTE PTR ES:[DI],AL
  MOV BYTE PTR ES:[DI+1],2
  INC SI
  ADD DI,2
  LOOP S3
  
  MOV AX,4C00H
  INT 21H
CODE ENDS
END START
按照‘梦想飞扬’的想法,我实现了一下,还是比较简单的,我之前那个程序写的好像有点烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-2 15:54:33 | 显示全部楼层
本帖最后由 梦想飞扬 于 2012-3-2 15:58 编辑

发下我自己做的吧
assume cs:code
code segment
d0:    db '00/00/00 00:00:00'
d1:    db 9,8,7,4,2,0
start:   mov ax,cs
         mov ds,ax
   mov si,offset d0
   mov di,offset d1
   
         mov cx,6
      push si
  s:  push cx  
         mov al,[di]
         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 byte ptr [si],ah
   mov byte ptr [si+1],al
   inc di
   add si,3
   pop cx
   loop s
   
   mov ax,0b800h
   mov es,ax
   mov bx,0
   pop si
   mov cx,17   
s0:  mov al,[si]
   mov es:[bx+12*160+64],al
   inc si
   add bx,2
   loop s0
ok:  mov ax,4c00h
   int 21h
   
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-3 01:14:48 | 显示全部楼层
只是路过过来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-4 15:34:37 | 显示全部楼层
学习了,不错的程序!{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-5 00:19:43 | 显示全部楼层
大家的代码都有这么长。
我想,既然不可避免长的话,就简单明了算了。
如下:
  1. assume cs:code
  2. code segment
  3.         start:
  4.                 mov ax,0b800h
  5.                 mov es,ax
  6.                 mov si,160*12+81-17
  7.                
  8.                 mov al,9
  9.                 out 70h,al
  10.                 in al,71h
  11.                 mov ah,al
  12.                 mov cl,4
  13.                 shr ah,cl
  14.                 and al,00001111b
  15.                 add ah,30h
  16.                 add al,30h
  17.                 mov byte ptr es:[si],ah
  18.                 mov byte ptr es:2[si],al
  19.                 mov byte ptr es:4[si],'/'
  20.                
  21.                 mov al,8
  22.                 out 70h,al
  23.                 in al,71h
  24.                 mov ah,al
  25.                 mov cl,4
  26.                 shr ah,cl
  27.                 and al,00001111b
  28.                 add ah,30h
  29.                 add al,30h
  30.                 mov byte ptr es:6[si],ah
  31.                 mov byte ptr es:8[si],al
  32.                 mov byte ptr es:10[si],'/'
  33.                
  34.                 mov al,7
  35.                 out 70h,al
  36.                 in al,71h
  37.                 mov ah,al
  38.                 mov cl,4
  39.                 shr ah,cl
  40.                 and al,00001111b
  41.                 add ah,30h
  42.                 add al,30h
  43.                 mov byte ptr es:12[si],ah
  44.                 mov byte ptr es:14[si],al
  45.                 mov byte ptr es:16[si],'/'
  46.                 mov byte ptr es:18[si],' '
  47.                
  48.                 mov al,4
  49.                 out 70h,al
  50.                 in al,71h
  51.                 mov ah,al
  52.                 mov cl,4
  53.                 shr ah,cl
  54.                 and al,00001111b
  55.                 add ah,30h
  56.                 add al,30h
  57.                 mov byte ptr es:20[si],ah
  58.                 mov byte ptr es:22[si],al
  59.                 mov byte ptr es:24[si],':'
  60.                
  61.                 mov al,2
  62.                 out 70h,al
  63.                 in al,71h
  64.                 mov ah,al
  65.                 mov cl,4
  66.                 shr ah,cl
  67.                 and al,00001111b
  68.                 add ah,30h
  69.                 add al,30h
  70.                 mov byte ptr es:26[si],ah
  71.                 mov byte ptr es:28[si],al
  72.                 mov byte ptr es:30[si],':'
  73.                
  74.                 mov al,0
  75.                 out 70h,al
  76.                 in al,71h
  77.                 mov ah,al
  78.                 mov cl,4
  79.                 shr ah,cl
  80.                 and al,00001111b
  81.                 add ah,30h
  82.                 add al,30h
  83.                 mov byte ptr es:32[si],ah
  84.                 mov byte ptr es:34[si],al
  85.        
  86.                 mov ax,4c00h
  87.                 int 21h
  88. code ends
  89. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-24 19:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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