1.阶乘
SSEG SEGMENT STACK
STK DB 20 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME SS:SSEG
ASSUME CS:CSEG
;入口参数ax,
;出口参数ax
F PROC
AND AX,AX
JNZ GO
MOV AX,1
RET
GO:PUSH AX
DEC AX
CALL F
POP BX
MUL BX
RET
F ENDP
;输入函数;
;出口al
INPUT PROC
MOV AH,01
INT 21H
RET
INPUT ENDP
CHAR PROC
MOV CL,12
SHR BX,CL
MOV DL,BL
CMP DL,9
JBE NO_ADD
SUB DL,10
ADD DL,'A'
SUB DL,'0'
NO_ADD: ADD DL,'0'
MOV AH,02H
INT 21H
RET
CHAR ENDP
;显示ax
SHOW PROC
MOV BX,AX
PUSH BX
CALL CHAR
POP BX
PUSH BX
MOV CL,4
SHL BX,CL
CALL CHAR
POP BX
PUSH BX
MOV CL,8
SHL BX,CL
CALL CHAR
POP BX
MOV CL,12
SHL BX,CL
CALL CHAR
RET
SHOW ENDP
MAIN:MOV AX,SSEG
MOV SS,AX
MOV SP,SIZE STK
CALL INPUT
SUB AL,'0'
MOV AH,0
CALL F
PUSH AX
MOV DL,10
MOV AH,02
INT 21H
POP AX
CALL SHOW
MOV AH,4CH
INT 21H
CSEG ENDS
END MAIN
2.21H的02功能会影响AL
CSEG SEGMENT
ASSUME CS:CSEG
MAIN:
MOV AX,3132H
MOV DL,AH
MOV AH,2
INT 21H
MOV DL,AL
INT 21H
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
3.多字节乘法思路:先用高级语言来描述思路,再用低级语言去实现
#include
using namespace std;
int main(){
int a[3] = { 1, 2, 3 }, b[3] = { 4, 5, 6 }, c[7] = {0};
int i, j,k;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++){
c[i + j] += a[i] * b[j];
for (k = i + j; c[k] > 10; k++){
c[k + 1] += c[k] / 10;
c[k] %= 10;
}
}
for (i = 7; i >0; i--)
cout << c[i] << " ";
cout << endl;
return 0;
}
4.打印九九乘法表
SSEG SEGMENT STACK
STK DB 20 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG
ASSUME SS:SSEG
CHAR PROC
PUSH AX
MOV AH,02H
INT 21H
POP AX
RET
CHAR ENDP
DISPLAY PROC
ADD DL,'0'
CALL CHAR
RET
DISPLAY ENDP
SHOW PROC
PUSH AX
MOV DL,10
DIV DL
AND AL,AL
JZ ONE
MOV DL,AL
CALL DISPLAY
ONE: MOV DL,AH
CALL DISPLAY
POP AX
RET
SHOW ENDP
MAIN:MOV AX,SSEG
MOV SS,AX
MOV SP,SIZE STK
MOV AH,1
OUTER:CMP AH,9
JA OVER
MOV AL,1
INNER :CMP AL,AH
JA INIT
MOV DL,AH
CALL DISPLAY
MOV DL,'*'
CALL CHAR
MOV DL,AL
CALL DISPLAY
MOV DL,'='
CALL CHAR
PUSH AX
MUL AH
CALL SHOW
POP AX
INC AL
MOV DL ,' '
CALL CHAR
JMP INNER
INIT:MOV DL,10
CALL CHAR
INC AH
JMP OUTER
OVER:MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
5.画棋盘
SSEG SEGMENT STACK
STK DB 20 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG
ASSUME SS:SSEG
POINT PROC
PUSH AX
MOV AX,0C12H
INT 10H
POP AX
RET
POINT ENDP
LINE_H PROC
PUSH CX
MOV CX,9
AGAIN_0:INC CX
CMP CX,190
JA OUT_0
CALL POINT
JMP AGAIN_0
OUT_0: POP CX
RET
LINE_H ENDP
LINE_V PROC
PUSH DX
MOV DX,9
AGAIN_1:INC DX
CMP DX,190
JA OUT_1
CALL POINT
JMP AGAIN_1
OUT_1:POP DX
RET
LINE_V ENDP
MAIN:MOV AX,SSEG
MOV SS,AX
MOV AH,0
MOV AL,04H
INT 10H
MOV BH,0
MOV CX,100
MOV DX,100
AGAIN_100:INT 10H
LOOP AGAIN_100
CALL POINT
MOV DX,0
AGAIN_2:ADD DX,10
CMP DX,190
JA OUT_2
CALL LINE_H
JMP AGAIN_2
OUT_2:MOV CX,0
AGAIN_3:ADD CX,10
CMP CX,190
JA OUT_3
CALL LINE_V
JMP AGAIN_3
OUT_3:MOV AH,01
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END MAIN
6.文件复制
DSEG SEGMENT
F1 DB 20,20 DUP(0)
F2 DB 20,20 DUP(0)
N1 DW 0
N2 DW 0
B DB 100 DUP(0)
DSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG
ASSUME CS:CSEG
IN_NAME PROC
PUSH AX
PUSH BX
MOV AH,0AH
INT 21H
MOV BX,DX
INC BX
MOV SI,BX
INC SI
MOV AL,[BX]
MOV AH,0
ADD SI,AX
MOV AL,0
MOV [SI],AL
POP BX
POP AX
RET
IN_NAME ENDP
OPEN PROC
MOV AX,3D02H
INT 21H
MOV [SI],AX
RET
OPEN ENDP
MAIN:MOV AX,DSEG
MOV DS,AX
LEA DX,F1
CALL IN_NAME
MOV AH,02H
MOV DL,10
INT 21H
MOV DL,13
INT 21H
LEA DX,F2
CALL IN_NAME
LEA DX,F1
ADD DX,2
LEA SI,N1
CALL OPEN
LEA DX,F2
ADD DX,2
LEA SI,N2
CALL OPEN
MOV BX,N1
LEA DX,B
MOV AH,3FH
MOV CX,1
AGAIN: PUSH AX
PUSH BX
PUSH CX
PUSH DX
INT 21H
MOV AL,B
CMP AL,'#'
JZ OVER
MOV AH,40H
MOV CX,1
LEA DX,B
MOV BX,N2
INT 21H
POP DX
POP CX
POP BX
POP AX
JMP AGAIN
OVER:MOV BX,N1
MOV AH,3EH
INT 21H
MOV BX,N2
INT 21H
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
7.向有序表中插入一个数据
DSEG SEGMENT
A DB 1,2,3,5,6,7,0
ASIZE DB 6
N DB 4
DSEG ENDS
SSEG SEGMENT STACK
STK DB 20 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME SS:SSEG
ASSUME CS:CSEG
ASSUME DS:DSEG
ASSUME ES:DSEG
MAIN:MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV SP ,SIZE STK
MOV AX,SSEG
MOV SS,AX
LEA SI,A
LEA BX,A
ADD BL,ASIZE
DEC BX
AGAIN0:CMP SI,BX
JA OVER0
MOV AL,[SI]
CMP N,AL
JA GO
JMP OVER0
GO:INC SI
JMP AGAIN0
OVER0:MOV AL,ASIZE
INC AL
MOV ASIZE,AL
AGAIN1:
CMP BX,SI
JL OVER1
MOV AL,[BX]
MOV [BX+1],AL
DEC BX
JMP AGAIN1
OVER1:
MOV AL,N
MOV [SI],AL
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
回顾大一大二,走了不少弯路。当年我一心学习GUI,想编出可视化程序,可是我依旧在dos黑框框下玩了一年半。
学习MFC,API耽误了许多时间。老师们也不提示一下该学什么,我也不知道用好网络资源。
有很多想编但是没编成的程序,如今看来只觉当年图样图西木破。
但是,我一直在探索,在进步,对许多方面有所涉猎,虽然忘记许多,却依旧有一种淡淡的知道感。
大学光阴就这么悄悄地溜走了。
该删的就删了吧,该忘的就忘了吧,时光如同大河,浩浩荡荡,每一步有每一步的风景,不必留恋过去。
现在有的将来还会有。