DATAS  SEGMENT
FIVE    DB
5
X        DB    ?
STR1    DB    'INPUT ONE NUM'
,'\$'
DATAS  ENDS

STACKS  SEGMENT
DB
128 DUP (?)
STACKS  ENDS

CODES  SEGMENT
ASSUME    CS:CODES
,DS:DATAS,SS:STACKS
START:
MOV        AX
,DATAS
MOV        DS
,AX

MOV        DX
,OFFSET    STR1
MOV        AH
,9
INT        21H

MOV        AL
,FIVE
,3
,30H
MOV        DL
,AL
MOV        AH
,2
INT        21H

MOV        AH
,4CH
INT        21H
CODES  ENDS
END  START

posted @ 2010-11-05 17:31 JimmyZhang 阅读(139) | 评论 (0)编辑 收藏

;练习使用模板的Helloworld
.MODEL SMALL
.386
.DATA
DA1 DB 'Hello world!'
DB 0DH
,0AH,'\$'
.STACK
ST1  DB
100 DUP(?)
.CODE
.STARTUP
MOV AH
,9
MOV DX
,OFFSET DA1
INT     21H
.EXIT
0
END

posted @ 2010-11-05 15:57 JimmyZhang 阅读(154) | 评论 (0)编辑 收藏

;两个多位十进制数相乘，并将结果送屏幕显示
DATAS SEGMENT
X        DB
4,5,6,7        ;定义被乘数
N1        EQU    \$-X
Y        DB
1,2,3,4        ;定义乘数
N2        EQU    \$-Y
Z        DB    30H    DUP(?)
P        DB    '4567X1234
='
Q        DB    30H    DUP(?)
DATAS ENDS

STACKS SEGMENT    STACK    'STACK'
DW        50H    DUP(?)
TOP        LABEL    WORD
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES
,DS:DATAS,SS:STACKS
MAIN    PROC    FAR
START:
MOV     AX
,DATAS
MOV     DS
,AX
MOV        AX
,STACKS
MOV        SS
,AX
MOV        SP
,OFFSET    TOP
MOV        CL
,4
MOV        SI
,0
MOV        BX
,N2
LOOP1:
MOV        CH
,Y[BX-1]
CALL    MMUL
INC        SI
DEC        BX
JNZ        LOOP1
MOV        SI
,DX
MOV        BX
,0
ASC:
MOV        AL
,Z[SI]
AND        AL
,0FH
OR        AL
,30H
MOV        Q
[BX],AL
INC        BX
DEC        SI
CMP        SI
,0
JNL        ASC
MOV        Q
[BX],'\$'
DISP:
MOV        AH
,9
MOV        DX
,OFFSET    P
INT        21H
MOV        AH
,4CH
INT        21H
RET
MAIN    ENDP
MMUL    PROC    NEAR
;两个多位十进制数相乘，并输出结果
PUSH    SI
PUSH    BX
MOV        BX
,N1
LOOP2:
MOV        AL
,X[BX-1]
CALL    MULS
CALL    DOUT
INC        SI
DEC        BX
JNZ        LOOP2
POP        BX
POP        SI
RET
MMUL    ENDP
MULS    PROC    NEAR
PUSH    BX
MOV        BL
,CH
AND        AL
,0FH
AND        BL
,0FH
MUL        BL
AAM
POP        BX
RET
MULS    ENDP
DOUT    PROC    NEAR
PUSH    SI
NEXT:
,Z[SI]
AAA
MOV        Z
[SI],AL
MOV        AL
,AH
XOR        AH
,AH
INC        SI
MOV        DX
,SI
CMP        AL
,0
JNZ        NEXT
POP        SI
RET
DOUT    ENDP

CODES ENDS
END START

posted @ 2010-11-02 16:02 JimmyZhang 阅读(624) | 评论 (0)编辑 收藏

;子程序名：AS2BIN
;

;

;

AS2BIN    PROC    FAR
PUSH    CX
PUSH    DX
PUSH    SI
MOV        SI
,DX        ;DX存到SI中
CMP        CX,6
JA        ERR
;为高于/不低于等于的转移指令;字符串的字符个数大于6则出错
CLD                    ;置DF=0
MOV        AL,[SI]        ;查符号
CMP        AL,'-'
JNE        CHK
MOV        MINU
,1
JMP        DECS
CHK:
CMP        AL
,'+'
JNE        CLRD
DECS:
DEC        CX
INC        SI
CLRD:
SUB        DX
,DX        ;DX清零，放结果
NEXT:
CALL    CHE
;乘十
JC        ERR
LODSB
;读下一个字符到AL
CMP        AL,'0'
JB        ERR
CMP        AL
,'9'
JA        ERR
;大于9或者小于0都出错
AND        AX,000FH    ;转换成二进制数
JC        ERR
;累加和超过65535出错;CF=1时出错
LOOP    NEXT
MOV        AX
,DX        ;结果送入AX
CMP        MINU,1        ;负数求补
JNE        EXIT
NEG        AX
JMP        EXIT
ERR:
STC
MOV        AX
,0
EXIT:
POP        SI
POP        DX
POP        CX
RET
CHE    PROC    NEAR
;乘10子程序
PUSH    BX
MOV        BX
,DX
SHL        DX
,1
SHL        DX
,1
,BX
SHL        DX
,1
POP        BX
RET
CHE    ENDP
AS2BIN    ENDP

posted @ 2010-11-01 10:58 JimmyZhang 阅读(137) | 评论 (0)编辑 收藏

;子程序名：B2TOBCD
;

;

;

B2TOBCD    PROC    FAR
CMP        AX
,9999
JBE        TRAN
;低于等于/不高于时转移
STC                ;置CF=1
JMP        EXIT
TRAN:
PUSH    CX
PUSH    DX
SUB        DX
,DX    ;DX清零
MOV        CX,1000    ;计算千位数
DIV        CX        ;(AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD;1字=2字节
XCHG    AX,DX    ;商在DX中，余数在AX中
MOV        CL,4
SHL        DX
,CL    ;DX左移4位
MOV        CL,100    ;计算百位数
DIV        CL        ;(AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
MOV        CL,4
SHL        DX
,CL    ;DX左移4位
XCHG    AL,AH    ;余数保存在AL中
SUB        AH,AH    ;AH清零
MOV        CL,10    ;计算十位数
DIV        CL
,AL
MOV        CL
,4
SHL        DX
,CL
,AH    ;加个位数
MOV        AX,DX    ;结果送到AX中
POP        DX
POP        CX
EXIT:
RET
B2TOBCD    ENDP

posted @ 2010-10-31 12:11 JimmyZhang 阅读(199) | 评论 (0)编辑 收藏

1.首先使用map需要

#include<map>
2.map的构造函数为
Map<key,value> arrayName;

Map<intstring> mapStudent;
3.三种插入方式：

mapStudent.insert(pair<intstring>(1, “student_one”));

mapStudent.insert(map<intstring>::value_type (1, “student_one”));

mapStudent[1=  “student_one”;

4.数组的大小：
Int nSize = mapStudent.size();

5.三种遍历方式：

map<intstring>::iterator  iter;

for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
Cout
<<iter->first<<”   ”<<iter->second<<end;

map<intstring>::reverse_iterator  iter;

for(iter = mapStudent.rbegin(); iter != mapStudent.rend(); iter++)
Cout
<<iter->first<<”   ”<<iter->second<<end;

for(int i=0;i<mapStudent.size();i++)cout<<mapStudent[i]<<endl;

http://www.kuqin.com/cpluspluslib/20071231/3265.html

posted @ 2009-01-20 01:04 JimmyZhang 阅读(658) | 评论 (0)编辑 收藏

Prim笔记

1。建图，只会用邻接矩阵。
2。一个used数组长度为图的大小，记录使用过的点。
3。一个v数组，用来记录最小生成树的边，每个点相应的值是这个点所在树枝的长度。
4。一个找最小枝的函数，minn，返回到最小生成树距离最短的点的编号。
5。prim函数，循环n次，每次将找到的最小的点标为used，然后看生成树到各个点的距离是不是比这个点到各个点的距离大，是则更新v集合。途中可以实现题目要求的目的，例如求和，求最大最小值。
6。v集合是最小生成树到各个点的距离。

posted @ 2008-12-01 21:41 JimmyZhang 阅读(163) | 评论 (0)编辑 收藏