-/
REP MOVSB
MOV CX,100
LEA BUF2
S : MOV AL,’#’
COM AL,[DI]
JNZ COUN MOV AL,’ ’ MOV [DI],AL COUN: INC DI LOOP S
MOV AH,4CH
INT 21H CODE ENDS
END START
3、编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。 DATA SEGMENT OLDS DB 1,2,3,4,5 NEWS DB 1,2,3,4,'A' N = $-NEWS RESULT DB 0 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX ;初始化 MOV SI,OFFSET OLDS MOV DI,OFFSET NEWS MOV CX,N DON: MOV AL, [SI] CMP AL, [DI] JNZ NOEQU ;串不相等转 INC SI INC DI LOOP DON MOV AL,0 JMP OUTPUT NOEQU: MOV AL,0FFH OUTPUT: MOV RESULT,AL STOP: JMP STOP ;程序陷阱 CODE ENDS
END START
-/
4、累加数组中的元素,将和存于SUM开始单元,数据段定义如下 DATA SEGMENT
ARRAY DW 10,10,12,4,5,6,7,8,9,10 COUNT DW ($-ARRAY)/2 SUM DW ?,? DATA ENDS
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,COUNT MOV BX,2 MUL BX MOV CX,AX MOV AX,0 LEA SI,ARRAY S: ADD AX,[SI] ADD SI,2 LOOP S LEA SI,SUM MOV [SI],AX MOV AH,4CH
INT 21H
CODE ENDS
END START
5、编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM。 DATA SEGMENT CN DW ? SUM DW ? DATA ENDS
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV CX,0 MOV AX,0 MOV BX,1 S: ADD AX,BX
INC CX CMP AX,1000 JA OK INC BX JMP S
OK: LEA SI,SUM
-/
MOV [SI],AX LEA DI,CN
MOV [DI],CX
MOV AH,4CH INT 21H CODE ENDS
END START
6、从给定串中寻找最大值,并放到MAX单元,元素放在BUFFER开始的字节单元中。 DATA SEGMENT
BUFFER DB 10,32,56,11,90,56,89,21
N EQU $-BUFFER
MAX DB ? DATA ENDS
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX MOV CX,N-1 LEA SI,BUFFER
S: MOV AL,[SI] CMP AL,[SI+1] JNA S1
XCHG [SI+1],AL XCHG [SI],AL
S1: INC SI LOOP S
MOV AL,[SI] LEA SI,MAX MOV SI,AL MOV AH,4CH INT 21H CODE ENDS END START
7、把BUF表中的字节元素按值的大小升序排列。数据段定义如下: BUF DB 10,32,56,11,90,56,89,21 N = $-BUF
DATA SEGMENT
BUF DB 10,32,56,11,90,56,89,21
N EQU $-BUF
DATA ENDS
ASSUME CS:CODE,DS:DATA
-/
START: MOV AX,DATA
MOV DS,AX MOV DX,N-1
S1: MOV BL,0
MOV CXDX LEA SI,BUF
S2: MOV AL,[SI]
CMP AL,[SI+1] JNA NO
XCHG [SI+1],AL XCHG [SI],AL MOV BL,0FFH NO: INC SI
LOOP S2 DEC DX CMP DX,0 JNE S1
MOV AH,4CH INT 21H CODE ENDS END START
8、类型号为20H的中断服务程序入口符号地址为INT-5,试写出中断向量的装入程序片断。 CLI
PUSH DS PUSH AX
XOR AX,AX MOV DS,AX
MOV AX,OFFSET INT-5
MOV WORD PTR [080H],AX MOV AX,SEG INT-5
MOV WORD PTR [082H],AX POP AX POP DS STI
9、设一个8253的计数器0产生周期为20ms的定时信号,计数器1产生周期为100ms的定时信号。设外部时钟频率为f=2MHZ,端口地址为330H~333H。试对它进行初始化编程。
MOV AL,00110100B MOV DX, 333H OUT DX,AL MOV AX,40000 MOV DX, 330H OUT DX,AL
-/
MOV AL,AH OUT DX,AL
MOV AL,01110100B MOV DX, 333H OUT DX,AL MOV AX,5
MOV DX, 331H OUT DX,AL MOV AL,AH OUT DX,AL
10、已知某8253占用I/O空间地址为40H~43H,设定时器0、定时器1工作于方式3,外部提供一个时钟,频率f=2MHZ。要求定时器1连续产生5ms的定时信号,定时器0连续产生5秒的定时信号。
MOV AL,00110110B OUT 43H,AL MOV AX,1000 OUT 40H,AL MOV AL,AH OUT 40H,AL
MOV AL,01110110B OUT 43H,AL MOV AX,5000 OUT 41HAL MOV AL,AH OUT 41H,AL
11、用8255A控制三个发光二极管依秩序循环显示。假设开关闭合时,点亮发光二极管,开关断开时息灭二极管。(1)画出原理图,并说明工作原理;(2)选择8255工作方式;(3)编写8255初始化程序与控制程序。 见课本P226
12、8255连接一组开关与一组LED显示器,如图所示。开关状态用LED显示,若闭合,则点亮。8255端口地址为310H~313H。(1)选择8255工作方式;编写8255初始化程序与控制程序。 见课本P233
四、常用指令与读程序