这是一个简单的小程序

这是一个简单的小程序,第1张

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

以上就是关于这是一个简单的小程序全部的内容,包括:这是一个简单的小程序、授权过的小程序为什么不显示、高分求一汇编小程序,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10104182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存