
1、开始—读P1口数据到A。
2、A中的数据右移4次—A中的内容和F0H相或。
3、A中的数据送到P1口—回到开始。
4、单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4。
5、程序:ORG00HSTART:MOVA,P1ANLA,#0F0HRRARRARRARRAORlA,#0F0HMOV,SJMPSTART。
DATA SEGMENT //定义数据段ARRAY DB 8 DUP(0)定义八个0
NUM DB 31H,': ','$' 定义字符
IN1 DB 0AH,0DH,'Please input the score : ','$'定义字符串
IN2 DB 0AH,0DH,'error!Please input the score again: ','$'定义字符串
IN3 DB 0AH,0DH,'the range of number is: ','$' 定义字符串
IN4 DB 0AH,0DH,'the average score is ','$'定义字符串
DATA ENDS数据段定义完毕
STACKSEGMENT PARA STACK定义堆栈
DW 20H DUP(0)定义20H的堆栈
STACKENDS 堆栈段定义完毕
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK 指定代码段,数据段,堆栈段
START: MOV AX,DATA程序开始
MOV DS,AX这两句是指定数段渗据段
XOR BX,BX 清空BX
MOV CX,7 计数器CX=7
ENTER:
LEA DX,IN1把IN1这个数据串的首地址给DX,作为基地址
MOV AH,9 设置显示属性AH=9
INT 21H 调用显示中断
MOV AH,1 设置显示属性
INT 21H 调用显示中断
CMP AL,30H
JB ERROR 比较是否产生错误。
CMP AL,39H
JA ERROR 比较是否产生错误。
MOV ARRAY[SI],AL把Al的值放到链陪ARRAY为基地址,SI为偏移棚燃蠢地址的位置。
INC SI 偏移地址自加
INC NUM
MOV DL,0AH
INC AH
INT 21H调用显示中断
MOV DL,0DH
INT 21H
LOOP ENTER 循环7次
JMP RANGE
ERROR: LEA DX,IN2
MOV AH,9
INT 21H
JMP ENTER
RANGE:
MOV BX,1
MOV CX,7
XOR DI,DI
RANGE1: MOV AL,ARRAY[DI]
CMP AL,ARRAY[DI+1]
JAE NEXT
XCHG ARRAY[DI+1],AL
MOV ARRAY[DI],AL
MOV BX,0
NEXT: INC DI
LOOP RANGE1
CMP BX,0
JE RANGE
LEA DX,IN3
MOV AH,9
INT 21H
MOV CX,7
XOR SI,SI
MOV AH,2
RANGE2:
MOV DL,ARRAY[SI]
INT 21H
INC SI
XOR DL,DL
INT 21H
LOOP RANGE2
MOV AH,2
MOV DL,0AH
INT 21H
MOV AL,0DH
INT 21H
LEA DX,IN4
MOV AH,9
INT 21H
MOV CX,4
XOR AX,AX
MOV AL,ARRAY[SI-2]
XOR AL,30H
SUBDIV:
ADD AL,ARRAY[SI-3]
SUB AL,30H
DEC SI
LOOP SUBDIV
MOV BL,5
DIV BL
PUSH AX
XOR AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV DL,'.'
MOV AH,2
INT 21H
POP AX
MOV AL,AH
SHL AL,1
MOV DL,AL
XOR DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODEENDS
END START
1、用寄存器BX和位移量首宽COUNT的寄存器相对寻址方式,把存储器中的一个字与AX寄存者迅亮器之内容相加,并把结果保存在存储器单元中。解:ADD AX , [BX+COUNT]
MOV [BX+COUNT] , AX
2、将AX寄存器的内容减去CX寄存器的内容,并把结果保存在AX寄存器中。
解:SUBAX ,CX
3、下列程序的功能是:利用DOS的功能调用,显示一串字符;通过填空昌侍将下列程序补充完整。
STACK SEGMENT SYACK
DB 256 DUP (?)
TOP LABEL WORD
(STACK ENDS )
DATA SEGMENT
BUF DB ‘ I WISH YOU SUCCESS! $ ‘
DATA ENDS
CODE SEGEMENT
ASSUME (CS:CODE,DS:DATA,SS:STACK)
START: MOV AX,( DATA)
MOV DS,( AX )
MOV AX,(STACK)
MOV SS,AX
LEA SP, TOP
LEA DX,(BUF)
MOV AH,9
INT ( 21H )
(MOV AH, 4CH )
INT 21H
CODE ENDS
END START
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)