import javautil;
class Demo
{
public static void main(String[] args)
{
Systemoutprintln(getSimple(100));
}
public static int getSimple(int max)
{
//定义一个数组,装入1到指定的100的所有值
ArrayList<Integer> arr=new ArrayList<Integer>();
for(int x=1;x<=max;x++)
{
arradd(x);
}
//定义一个计数器
int count=0;
int num;
//开始循环,对集合进行遍历
while(arrsize()>1)
{
//遍历
for(ListIterator<Integer> li=arrlistIterator();lihasNext();)
{
Integer i=linext();
count++;
if(count==14)
{
liremove();
count=0;
}
}
//集合中只有一个元素时返回。
if(arrsize()==1)
{
num=arrget(0);
return num;
}
}
}
}
原因如下:
授权过的小程序在荣耀x9pro型号:HLK-AL10 *** 作系统:EMUI1010安卓系统,是无法获取,显示不出;
在手机:vivoiQOO型号:V1824A系统:iQOOUI安卓10的手机上可以显示。
我这还有份设计报告,这里粘贴不了,要的话说一声便是。
data segment
Week db 'SunMonTusWedThuFriSta'
inter_Seg dw
inter_offset dw
MESS0 DB '$'
MESS1 DB ' Show the time of System $'
MESS2 DB ' Day of system $'
MESS3 DB ' $'
MESS4 DB ' Time of system $'
MESS5 DB ' QQ:137824675 $'
MESS6 DB 'Press enter key to quit!$'
prog_len equ $-start
data ends
sta segment stack
dw 100h dup()
top label word
sta ends
code segment
assume cs:code,ds:data,ss:sta
main proc far
start:
mov ax,sta
mov ss,ax
lea sp,top
mov ax,data
mov ds,ax
;-------------取 中断型号 1ch ,的中断向量-----------
mov al,1ch
mov ah,35h
int 21h
mov ax,es
mov inter_Seg,ax
mov inter_offset, bx
;-------------重置 中断型号 1ch ,的中断向量----------
push ds
mov ax, seg showtime
mov ds,ax
mov dx, showtime
mov al,1ch
mov ah,25h
int 21h
pop ds
;--------------设置中断屏蔽位,开中断-----------------
in al,21h
and al,0feh ; 1111 1110b
out 21h,al
sti
lp:
MOV AH,0
INT 16H ;查询键盘
CMP AX,1C0DH ;看右enter键是否被按下
JNE lp ;若没有按下,则跳回lp
;mov ax, prog_len
;-------------------结束并驻留内存---------------
mov ax,3100h
mov dx,((prog_len + 15)/16) ;驻留区,16的整数倍
int 21h
mov ax,4c00h
int 21h
main endp
;----------------------------------
showtime proc far
push ds
push ax
push cx
push dx
mov ax,data
mov ds,ax
sti
MOV BX,0
MOV DH,04H
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS1
MOV AH,9H
INT 21H ;显示MESS1
MOV BX,0
MOV DH,05H
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS2
MOV AH,9H
INT 21H ;显示MESS2
MOV BX,0
MOV DH,06H
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS3
MOV AH,9H
INT 21H ;显示MESS3
MOV BX,0
MOV DH,08H
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS0
MOV AH,9H
INT 21H ;显示MESS0
MOV BX,0
MOV DH,0AH
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS3
MOV AH,9H
INT 21H ;显示MESS3
MOV BX,0
MOV DH,0BH
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS4
MOV AH,9H
INT 21H ;显示MESS4
MOV BX,0
MOV DH,0CH
MOV DL,16H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS5
MOV AH,9H
INT 21H ;显示MESS5
MOV BX,0
MOV DH,0EH
MOV DL,19H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕指定位置(DH,DL分别设置行列) 调整提示信息的位置
LEA DX,MESS6
MOV AH,9H
INT 21H ;显示MESS6
;--------------------显示日期------------------
MOV BX,0
MOV DH,06H
MOV DL,21H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕中央(DH,DL分别设置行列)
MOV AH,2AH
INT 21H
;----------------
push ax
mov ax,cx
call far ptr disp1
;--------
push dx
mov dl,'-'
mov ah,02
int 21h
pop dx
mov al,dh
call far ptr disp
mov dh,dl
mov dl,'-'
mov ah,02h
int 21h
mov al,dh
call far ptr disp
mov cx,2
lp0:
mov dl,' '
mov ah,02
int 21h
loop lp0
pop ax
call far ptr disp2
;--------------------显示时间------------------
MOV BX,0
MOV DH,0AH
MOV DL,25H
MOV AH,2H
INT 10H ;调用BIOS中断把光标置屏幕中央(DH,DL分别设置行列)
MOV AH,2CH
INT 21H ;调用DOS中断查询系统时间
MOV AL,CH ;取得的小时数放到AL,为调用子程序准备入口参数
CALL FAR PTR DISP ;调用子程序,显示小时数
MOV DL,':'
MOV AH,02H
INT 21H ;显示小时与分钟间的“:”
MOV AL,CL ;取得的分钟数放到AL,为调用子程序准备入口参数
CALL FAR PTR DISP ;调用子程序,显示分钟数
MOV DL,':' ;显示分钟与秒间的“:”
MOV AH,02H
INT 21H
MOV AL,DH ;取得的秒数放到AL,为调用子程序准备入口参数
CALL FAR PTR DISP ;调用子程序,显示秒数
exit:
cli
pop dx
pop cx
pop ax
pop ds
iret
showtime endp
;子程序名:disp
;子程序功能:将两位十六进制数转换为十进制数显示出来(这里只显示十位和个位)
;入口参数:AL存放要转换的十六进制数
;出口参数:无
disp proc far
push ax
push cx
push dx
mov cl,100
mov ah,0
div cl
mov al,ah ;余数放到AL,最高位(百位)不必显示
mov ah,0
mov cl,10
div cl
mov dh,ah
mov dl,al
add dl,48
mov ah,02h
int 21h ;display sec
mov dl,dh
add dl,48
mov ah,02h
int 21h ;display 3
pop dx
pop cx
pop ax
ret
disp endp
;---------------------------------------------------
;子程序名:disp1
;子程序功能:将4位十六进制数转换为十进制数显示出来
;入口参数:AL存放要转换的十六进制数
;出口参数:无
disp1 proc far
push ax;
push bx
push cx
push dx;
and dx,00
mov cx,4
mov bx,10
lp1:
div bx
push dx
sub dx,dx
loop lp1
mov cx,4
lp2:
pop dx
add dl,30h
mov ah,02
int 21h
loop lp2
pop dx
pop cx
pop bx
pop ax
ret
disp1 endp
;-----------完成年份的输出------------------
;------------------显示星期(前三个英文字母)------------------
;子程序名:disp2
;子程序功能:输出当天是星期几(英语单词的前三个字母)
;入口参数:al(0——6)(星期日——六 )存放要转换的星期数
;出口参数:无
disp2 proc far
push ax
push bx
push dx
push cx
push si
and ah,00
mov cl,3
mul cl
lea si,week
add si,ax
lp3:
mov dl,[si]
inc si
mov ah,02
int 21h
loop lp3
pop si
pop cx
pop dx
pop bx
pop ax
ret
disp2 endp
code ends
end start
AL=34H BL=78H
ADD AL ,BL
是指AL+BL->AL(和存在AL)
以后AL=0ACH
DAA是转换压缩BCD码的意思
解释一下:
BCD码是把十六进制当十进制用
如34H 是十进制52 用BCD码表示是0101 0010,前四位表示五,后四位表示二
这样可能回产生进位,
ADC AL,BH
是AL+BH+CF(进位标志)->AL
写一段给你吧~ 以 7ch中断为例 间隔显示时间自己可以修改~ 在 dally里
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start: push cs
pop ds
mov si,offset s8
mov ax,0
mov es,ax
mov di,200h ;ds:si 指向源地址 es:si指向目的地址
mov cx, offset s9-offset s8
cld
rep movsb
cli
mov word ptr es:[7ch4],200h
mov word ptr es:[7ch4+2],0 ;设置中断向量表
sti
int 7ch ;------->调用安装好的中断例程~ 测试~
mov ax,4c00h
int 21h
s8: push ax
push es
push di
push cx
mov ax,0b800h
mov es,ax
mov di,12160+402
mov cx,9
mov al,31h
s: mov byte ptr es:[di],al
mov byte ptr es:[di+1],2
call dally
inc al
cmp al,99h
ja s1
cmp cx,1
je s1
loop s
s1:mov cx,9
mov al,31h
jmp short s
dally: push ax
push bx
mov ax,0 ;延迟输出时间在此设置
mov bx,5000h
s2: sub ax,1
sbb bx,0
cmp ax,0
jne s2
cmp bx,0
jne s2
pop bx
pop ax
ret
s9: pop cx
pop di
pop es
pop ax
iret
code ends
end start
以上就是关于这是一个简单的小程序全部的内容,包括:这是一个简单的小程序、授权过的小程序为什么不显示、高分求一汇编小程序,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)