鱼C论坛

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

实验14,我写的程序达不到要求,但是我不知道错在那里了。

[复制链接]
flyue 该用户已被删除
发表于 2011-9-29 01:53:38 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-29 16:55:40 | 显示全部楼层
子程序应该用  xxx  proc
                    ..........
                    xxx  endp
定义的
小甲鱼最新课程 -> https://ilovefishc.com
flyue 该用户已被删除
 楼主| 发表于 2011-9-29 18:01:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-29 19:11:35 | 显示全部楼层
用Call说明代码不在一个段,如果不定义子程序那你就把代码定义在一个段内用JMP
小甲鱼最新课程 -> https://ilovefishc.com
flyue 该用户已被删除
 楼主| 发表于 2011-9-29 20:35:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-2 23:24:13 | 显示全部楼层
在代码规范方面,你得下些功夫!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-11 21:11:49 | 显示全部楼层
  1. assume cs:code
  2.        
  3. ds1 segment
  4.         db '/',':'
  5. ds1 ends
  6.        
  7. code segment
  8. start:
  9.         mov si,160*12+40*2
  10.         mov ax,0b800h
  11.         mov es,ax
  12.        
  13.         mov ax,ds1
  14.         mov ds,ax
  15.        
  16.         mov bx,0
  17.         mov cx,3
  18.         mov al,9
  19.        
  20.         ;取日期
  21.         call s
  22.        
  23.         mov al,4
  24.        
  25.         mov cx,3
  26.        
  27.         call s1
  28.        
  29.         mov ah,1
  30.        
  31.         int 21h
  32.        
  33.         mov ax,4c00h
  34.        
  35.         int 21h
  36.        
  37. s: push cx
  38.         push ax       
  39.         out 70h,al       
  40.         in al,71h
  41.        
  42.         mov ah,al
  43.         mov cl,4
  44.         shr ah,cl
  45.         and al,00001111b
  46.        
  47.         add ah,30h
  48.         add al,30h
  49.        
  50.         mov es:[si].0,ah
  51.         mov es:[si].2,al
  52.        
  53.         pop ax
  54.         add si,6
  55.         dec al       

  56.         pop cx
  57.         dec cx
  58.        
  59.         jcxz s_end
  60.        
  61.         jmp s
  62.        
  63. s_end:
  64.         mov al,ds:[bx]
  65.        
  66.         ;因为直接写入显存中,一个字符占两个字节。
  67.         ;y  y  /  m  m  /  d  d
  68.         ;01 23 45 67 89 AB CD EF
  69.         mov es:[si-14],al
  70.         mov es:[si-8],al
  71.         ;这里用ax相当于把“/”的高位也传进显存中。“/”的颜色受ah影响
  72.         ret
  73.        
  74. s1:
  75.         push cx
  76.         push ax
  77.        
  78.         out 70h,al
  79.         in al,71h
  80.         mov ah,al
  81.        
  82.         mov cl,4
  83.         shr ah,cl
  84.         and al,00001111b
  85.         add ah,30h
  86.         add al,30h
  87.        
  88.         mov es:[si].0,ah       
  89.         mov es:[si].2,al
  90.        
  91.         pop ax       
  92.         add si,6
  93.        
  94.         sub al,2
  95.        
  96.         pop cx
  97.        
  98.         dec cx
  99.        
  100.         jcxz s1end
  101.        
  102.         jmp s1
  103.        
  104. s1end:
  105.         mov al,ds:[bx+1]       
  106.         mov es:[si-14],al
  107.         mov es:[si-10].2,al       
  108.         ret



  109. code ends

  110. end start
复制代码
修改好了,你自己对比吧!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-11 21:25:33 | 显示全部楼层
  1.         mov ah,1

  2.         int 21h
  3.         
  4.         mov ax,4c00h
  5.         
  6.         int 21h
复制代码
mov ah,1
int 21h
这是按任意键继续。和上面没关系!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-5 00:31:14 | 显示全部楼层
  1. ;实验14:编程,以“年/月/日 时:分:秒” 的格式,显示当前日期、时间
  2. assume cs:code

  3. code segment
  4. start:
  5.                 mov ax,0b800h
  6.                 mov ds,ax
  7.                 mov di,12*160+80-18                ;设置显示位置
  8.                 mov dh,2                                ;设置显示属性
  9.                
  10.                 mov al,9
  11.                 mov bl,'/'
  12.                 call readTime
  13.                
  14.                 mov al,8
  15.                 mov bl,'/'
  16.                 call readTime
  17.                
  18.                 mov al,7
  19.                 mov bl,' '
  20.                 call readTime
  21.                
  22.                 mov al,4
  23.                 mov bl,':'
  24.                 call readTime
  25.                
  26.                 mov al,2
  27.                 mov bl,':'
  28.                 call readTime
  29.                
  30.                 mov al,0
  31.                 mov bl,0
  32.                 call readTime
  33.                
  34.                 mov ax,4c00h
  35.                 int 21h
  36.                
  37. showTime:;显示数据,dl为要显示的字符;dh为显示的属性
  38.                 mov [di],dx
  39.                 add di,2
  40. ret

  41. ;参数(al:端口号;bl:附加符号) 功能:读取CMOS RAM的端口(al)的信息,并显示到屏幕上
  42. readTime:
  43.                 ;读取CMOS RAM的端口(al)的信息
  44.                 out 70h,al
  45.                 in al,71h
  46.                
  47.                 ;获取高4位二进制信息
  48.                 mov ah,al
  49.                 mov cl,4
  50.                 shr ah,cl
  51.                
  52.                 ;获取低4位二进制信息
  53.                 and al,00001111b
  54.                
  55.                 ;转换为ASCII码
  56.                 add ah,30h
  57.                 add al,30h
  58.                
  59.                 mov dl,ah
  60.                 call showTime
  61.                
  62.                 mov dl,al
  63.                 call showTime
  64.                
  65.                 mov dl,bl
  66.                 call showTime
  67. ret
  68. code ends
  69. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-10-18 15:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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