汇编实验4.1

原创
2018/04/25 11:40
阅读数 50

试编制一程序,要求测出任意程序的运行时间,并把结果在屏幕打印出来。

获取时间的方式

MOV AH,2AH
INT 21H;取得当地日期
MOV AH,2CH
INT 21H;取得当地时间
BIOS调用的时间和日期功能介绍如下:
2AH —读取日期
2CH —读取时间
(1)、功能2AH
功能描述:取系统日期
入口参数:AH=2AH
出口参数:CX=年(1980~2099),DH=月(1~12),DL=日(1~31)
AL=星期几(0=Sunday,1=Monday,...)
(2)、功能2CH
功能描述:取系统时间
入口参数:AH=2CH
出口参数:CH=时(0~23),CL=分(0~59),DH=秒(0~59),DL=百分秒(0~99)

 

在程序开头和结尾获取时间并相减输出,这里只用秒和百分秒。。。

一般没有运行几分钟的汇编吧。。。

 

数字的输出是反向的

结果为8.97 秒

DATAS SEGMENT
    ;此处输入数据段代码  
    s1 dw 0
    s2 dw 0 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    ; 获取 时间
    mov ah,2ch
    int 21h
    
     ;加百分秒到bx中
    mov bx,0
  	mov cx,dx
    mov ch,0
   	add bx,cx
    
    ; 加上秒*100到bx
    mov al,dh
    mov dh,100
    mul dh
    add bx,ax
    
    mov s1,bx
 
    
    ; 中断
 	mov ah,01h
    int 21h
    
     ; 获取 时间
    mov ah,2ch
    int 21h
    
     ;加百分秒到bx中
    mov bx,0
  	mov cx,dx
    mov ch,0
   	add bx,cx
    
    ; 加上秒*100到bx
    mov al,dh
    mov dh,100
    mul dh
    add bx,ax
    
    mov s2,bx
 	
 	mov ax,s2
 	mov bx,s1
 	sub ax,bx
 	
 	mov cx,5		;cx中保存输出数字的位数
    mov bl,10 		;bl中保存按照10进制输出
 s:
    div bl   	;余数放在ah,商放在al中
    mov dl,ah
    add dl,30h
    mov bh,al
    	
    mov ah,2h
    int 21h
    mov al,bh
    mov ah,0
    
    loop s
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

 

 

用栈将时间顺序输出

DATAS SEGMENT
    ;此处输入数据段代码  
    s1 dw 0
    s2 dw 0 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    ; 获取 时间
    mov ah,2ch
    int 21h
    
     ;加百分秒到bx中
    mov bx,0
  	mov cx,dx
    mov ch,0
   	add bx,cx
    
    ; 加上秒*100到bx
    mov al,dh
    mov dh,100
    mul dh
    add bx,ax
    
    mov s1,bx
 
    
    ; 中断
 	mov ah,01h
    int 21h
    
     ; 获取 时间
    mov ah,2ch
    int 21h
    
     ;加百分秒到bx中
    mov bx,0
  	mov cx,dx
    mov ch,0
   	add bx,cx
    
    ; 加上秒*100到bx
    mov al,dh
    mov dh,100
    mul dh
    add bx,ax
    
    mov s2,bx
 	
 	mov ax,s2
 	mov bx,s1
 	sub ax,bx
 	
 	mov cx,5		;cx中保存输出数字的位数
    mov bl,10 		;bl中保存按照10进制输出
 s:
    div bl   	;余数放在ah,商放在al中
    
    mov dl,ah
    add dl,30h
    push dx
    mov bh,al
    mov al,bh
    mov ah,0
    loop s
    
    mov cx,5
t:
	pop dx
    mov ah,2h
    int 21h
    loop t
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部