中国法院裁决文书:汇编程序LEA SI,BUF1 MOV N,7 MOV CL,3什么意思?(含程序)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/03 05:47:13
这是数字方阵的程序代码
;定义数据段
DATA SEGMENT
BUF1 DB '1 2 38 9 47 6 5'
BUF2 DB '1 2 3 412 13 14 511 16 15 610 9 8 7'
BUF3 DB '1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9'
DBUF DB 14 DUP(?)
I1 DB 0DH,0AH,'THIS IS A FANGZHEN PROGRAMME' ;显示字符串
DB 0DH,0AH,'INPUT Q TO EXIT' ;显示字符串
DB 0DH,0AH,'PLEASE INPUT A NUMBER(3--5):','$' ;显示字符串
I2 DB 0DH,0AH,'INPUT ERROR,PLEASE REINPUT!','$' ;显示字符串
N DB ?
B DB 1
DATA ENDS

;定义堆栈段
STACK SEGMENT
DB 100 DUP(?)
STACK ENDS

;定义代码段
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
MAIN:
MOV AX,DATA
MOV DS,AX ;将数据段的段地址装入DS
CALL CLEAR ;调用CLEAR子程序
LOP: LEA DX,I1 ;调用DOS中断,显示字符串I1
MOV AH,9
INT 21H
MOV AH,1 ;接收从键盘输入的一个字符
INT 21H
CMP AL,'Q' ;判断输入的字符是否是Q
JZ QUIT ;如果输入字符为Q,则跳出程序
LEA SI,BUF1 ;将BUF1的偏移地址送给SI寄存器
MOV N,7
MOV CL,3
CALL CLEAR ;调用CLEAR子程序
CMP AL,'3'
JZ S ;
LEA SI,BUF2
MOV N,10
MOV CL,4
CMP AL,'4'
JZ S
LEA SI,BUF3
MOV CL,5
MOV N,13
CMP AL,'5'
JZ S
LEA DX,I2 ;调用DOS中断,显示字符串I2
MOV AH,9
INT 21H
CALL CLEAR
JMP LOP ;循环LOP
S:
MOV BL,N
LEA DI,DBUF

L: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC BL
JNE L
MOV [DI],BYTE PTR '$'
MOV AH,2
MOV DH,B
MOV DL,0
INT 10H
LEA DX,DBUF
MOV AH,9
INT 21H
INC B
LOOP S

JMP LOP
QUIT: MOV AH,4CH
INT 21H
;***清屏***
CLEAR PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX ;将寄存器入栈保护
MOV AH,6 ;6号功能实现设置光标位置
MOV AL,0 ;上卷行数,整个窗口空白
MOV BH,7 ;卷入行属性
MOV CH,0 ;左上角行号
MOV CL,0 ;左上角列号
MOV DH,24 ;右下角行号
MOV DL,79 ;右下角列号
INT 10H ;软中断指令,转入子程序入口
POP DX
POP CX
POP BX
POP AX
RET
CLEAR ENDP
CODE ENDS
END MAIN