微机原理大作业题目及程序代码
1、将AX寄存器中16位数分成4组,每组四位,然后把这四位数分
别放在AL、BL、CL和DL中。
code segment assume cs:code
start: mov ax,1234h;测试数据 mov cl,4 mov dx,ax and dl,0fh and dh,0fh mov bl,dh mov bh,al ror bh,cl and bh,0fh mov ch,bh ror ah,cl and ah,0fh mov al,ah mov cl,ch mov ah,4ch int 21h
code ends end start
1、
试编写一程序,要求比较两个字符串STRING1和STRING2所
含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NOMATCH”。
DATA SEGMENT STRING1 DB 'HELLO.' C1 EQU $-STRING1 STRING2 DB 'HELLO!' C2 EQU $-STRING2 S1 DB 'MATCH$' S2 DB 'NOMATCH$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,C1 CMP SI,C2 JNZ N_M MOV BX,0
L1: MOV AL,STRING1[BX]
CMP AL,STRING2[BX] JNZ N_M INC BX DEC SI JNZ L1
MOV DX,OFFSET S1 JMP EXIT
N_M: MOV DX,OFFSET S2 EXIT: MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
2、
试编写一程序,要求能从键盘接收一个个位数N,然后响铃N
次。
CODE SEGMENT ASSUME CS:CODE START: ;MOV DL,7
;MOV AH,2 ;INT 21H MOV AH,1
INT 21H CMP AL,30H JBE EXIT CMP AL,39H JA EXIT SUB AL,30H MOV CL,AL L1: MOV DL,07H MOV AH,2 INT 21H
MOV BX,1FFFH;延时 L3: MOV DX,0FFFFH L2: DEC DX JNZ L2 DEC BX JNZ L3 DEC CL JNZ L1 EXIT: MOV AH,4CH INT 21H CODE ENDS END START
3、
编写程序,将一个包含有20个数据的数组M分成两个数组:
正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
DATA SEGMENT
M DB 1,2,3,4,5,6,7,8,9,89,-1,-2
DB -3,-4,-5,-6,-7,-8,-9,0 P DB 20 DUP(?) N DB 20 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,20 MOV SI,0 MOV DI,0 MOV BX,OFFSET M L: MOV AL,[BX] CMP AL,0 JGE POS MOV N[DI],AL