您好,欢迎来到世旅网。
搜索
您的当前位置:首页微机原理程序

微机原理程序

来源:世旅网
实验二:循环程序设计 2.

DATA SEGMENT

x db -78,127,-128,-125,88 y db 32,-43,76,95,1 S db 5 dup(?) data ends

Code segment

Assume cs:code,ds:data Start:mov ax,data Mov ds,ax Mov cx,5 Mov bx,0

L1:mov al,x[bx] Add al,y[bx] Inc bx Loop L1

MOV AH,4CH INT 21H CODE ENDS END START 3.

DATA SEGMENT

Y DB 68H,24H,90H,57H,13H HX DB 67H,34H,12H,90H,57H S DB 5 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,5

MOV SI,OFFSET X MOV DI,OFFSET Y LP:MOV AL,[SI] MOV AH,[DI] ADC AL,AH DAA

MOV S[SI],AL INC SI INC DI LOOP LP

MOV AH,4CH INT 21H

CODE ENDS END START 4.

DATA SEGMENT

LIST DB 0,1,2,3,4,5,6,7,8,9 COUNT EQU $-LIST DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

MOV CX,COUNT-1 LOOP1:MOV DX,CX MOV BX,0

LOOP2:MOV AX,LIST[BX] CMP AX,LIST[BX+1] MOV LIST[BX],AX LOOP3:INC BX LOOP LOOP2 MOV CX,DX LOOP LOOP1 MOV AX,4CH INT 21H CODE ENDS END START

实验三:子程序调用程序设计 DATA SEGMENT

NUM DB 85,77,126,-1,-43,37,-128,11,-19,13 DATA ENDS

ADDITION SEGMENT NUM1 DB 10 DUP(?) ADDITION ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:ADDITION START:AX,DATA MOV DS,AX

MOV AX,ADDITION MOV ES,AX CALL ORDER CALL COPY MOV AH,4CH INT 21H

ORDER PROC MOV CX,9

LP2:MOV BX,0 MOV DX,CX

LP1:MOV AL,NUM[BX] CMP AL,NUM[BX+1] JLE NEXT

XCHG AL,NUM[BX+1] MOV NUM[BX],AL NEXT:ADD BX,1 DEC DX JNZ LP1 LOOP LP2 RET

ORDER ENDP COPY PROC MOV CX,10 MOV BX,0

LP:MOV AL,NUM[BX] MOV ES:NUM1[BX],AL INC BX LOOP LP RET

COPY ENDP CODE ENDS END START

实验四:DOS功能系统调用 1.

DATA SEGMENT DUF DB 10 DUP(?) DATA ENDS

STACK SEGMENT SA DB 100 DUP(?) TOP LABEL WORD STACK ENDS CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK START:MOV AX,STACK MOV SS,AX

MOV SP,OFFSET TOP PUSH DS SUB AX,AX PUSH AX

MOV AX,DATA MOV DS,AX MOV CX,05H

MOV AL,0 S1:MOV AH,1 INT 21H PUSH AX LOOP S1

MOV DL,0DH MOV AH,02H INT 21H

MOV DL,0AH MOV AH,02H INT 21H

MOV CX,05H MOV BX,4 S2:POP AX

MOV DUF[BX],AL DEC BX LOOP S2 MOV BX,0 MOV CX,05H

S3:MOV DL,DUF[BX] INC BX MOV AH,2 INT 21H LOOP3 INC AL

MOV AH,4CH INT 21H CODE ENDS END START 2.

DATA SEGMENT BUFF DB 50 DB ‘?’

LETTER DB 50 DUP(‘?’) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,BUFF MOV AH,0AH INT 21H

MOV DL,0DH MOV AH,02H

INT 21H

MOV DL,OAH MOV AH,02H INT 21H

LEA DX,LETTER MOV AH,09H INT 21H

MOV AH,4CH INT 21H CODE ENDS END START

第五次实验:接口预备知识 DATA SEGMENT

OUTBUF DB’5’,’4’,’3’,’2’,’1’ COUNT EQU $-COUNT DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

MOV SI,OFFSET OUTBUF MOV DI,COUNT NEXT:MOV DL,[SI] MOV AH,02H INT 21H

CALL DELAY INC SI DEC DI JNZ NEXT MOV AH,4CH INT 21H

DELAY PROC NEAR PUSH CX

MOV BX,299H

FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2 DEC BX JNZ FOR1 POP CX RET

DELAY ENDP CODE ENDS END START

第六次实验:简单的输出接口

1.

CODE SEGMENT ASSUME CS:CODE start:mov di ,2 l1:mov al ,02h mov dx,280h out dx,al call delay mov al ,00h mov dx,280h out dx,al call delay mov si,3

l2:mov al,04h mov dx,280h out dx,al call delay mov al,00h mov dx,280h out dx,al call delay dec si jnz l2

mov al,08h mov dx,280h out dx,al call delay mov al ,00h mov dx,280h out dx,al call delay dec di jnz l1

MOV AH,4CH INT 21H

DELAY PROC NEAR PUSH CX

MOV BX,100H

FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2 DEC BX JNZ FOR1 POP CX RET

DELAY ENDP CODE ENDS END START 2.

CODE SEGMENT ASSUME CS:CODE START:MOV CX,2 AA:MOV BX,8 PUSH CX

MOV DX,280H MOV AL,01H BB:OUT DX,AL CALL DELAY MOV DX,280H ROl AL,1 OUT DX,AL DEC BX JNZ BB POP CX

MOV DX,280H mov AL,00h OUT DX,AL LOOP AA MOV AH,4CH INT 21H

DELAY PROC NEAR PUSH BX PUSH CX

MOV BX,299H

FOR:MOV CX,0FFFFH FOR1:LOOP FOR1 DEC BX JNZ FOR POP CX POP BX RET

DELAY ENDP CODE ENDS END START

第七次实验:简单的输入接口 1.

data segment x db 'end$' data ends

code segment

assume cs:code,ds:data start:mov ax,data mov ds,ax mov cx,6 mov dl,31h lp: push dx

mov dx,280h in al,dx and al,10h mov bl,al lp1: in al,dx and al,10h cmp bl,al jz lp1 mov dl,0ah mov ah,02h int 21h mov dl,0dh int 21h pop dx int 21h inc dx loop lp mov dl,0ah int 21h mov dl,0dh int 21h

mov dx,offset x mov ah,09h int 21h mov ah,4ch int 21h code ends end start

2.

data segment x db 'end$' data ends code segment

assume cs:code,ds:data start:mov ax,data mov ds,ax mov cx,6

mov dl,31h lp: push dx

mov dx,280h in al,dx push cx mov cx,2 lp1: and al,10h mov bl,al lp2: in al,dx and al,10h cmp bl,al jz lp2 loop lp1 pop cx mov dl,0ah mov ah,02h int 21h mov dl,0dh int 21h pop dx int 21h inc dx loop lp mov dl,0ah int 21h mov dl,0dh int 21h

mov dx,offset x mov ah,09h int 21h mov ah,4ch int 21h code ends end start

第八次实验:数码管动态显示实验 1.

CODE SEGMENT ASSUME CS:CODE START:

MOV CX,03FFH L1: MOV DX,280H MOV AL,00H OUT DX,AL MOV DX,290H

MOV AL,76H ;H OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,73H;P OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L1 MOV DX,280H MOV AL,00H OUT DX,AL MOV AH,4CH INT 21H

DONG PROC NEAR PUSH CX PUSH BX MOV BX,0100H FOR1: MOV CX,0100H FOR2: LOOP FOR2 DEC BX JNZ FOR1 POP BX POP CX RET DONG ENDP CODE ENDS END START 2.

CODE SEGMENT ASSUME CS:CODE START:

MOV CX,01FFH L1: MOV DX,280H MOV AL,00H OUT DX,AL

MOV DX,290H MOV AL,3FH ;0 OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,06H;1 OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L1 MOV CX,01FFH L2: MOV DX,280H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,5BH ;2 OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,4FH;3 OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L2 MOV CX,010FH L3: MOV DX,280H MOV AL,00H OUT DX,AL

MOV DX,290H MOV AL,66H ;4 OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,6DH;5 OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L3 MOV CX,010FH L4: MOV DX,280H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,7DH ;6 OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,07H;7 OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L4 MOV CX,010FH L5: MOV DX,280H MOV AL,00H

OUT DX,AL MOV DX,290H MOV AL,7FH ;8 OUT DX,AL MOV DX,282H MOV AL,02H OUT DX,AL CALL DONG MOV DX,282H MOV AL,00H OUT DX,AL MOV DX,290H MOV AL,6FH;9 OUT DX,AL MOV DX,280H MOV AL,01H OUT DX,AL CALL DONG LOOP L5 MOV DX,280H MOV AL,00H OUT DX,AL MOV AH,4CH INT 21H

DONG PROC NEAR PUSH CX PUSH BX MOV BX,0100H FOR1: MOV CX,0100H FOR2: LOOP FOR2 DEC BX JNZ FOR1 POP BX POP CX RET DONG ENDP CODE ENDS END START

第九次实验:可编程并行接口8255实验 1.

code segment assume cs:code start:mov dx,283h mov al,90h

out dx,al mov dx,280h in al,dx and al,01h cmp al,01H mov cx,3 mov dx,281h jnz l2

l1:mov al,01h out dx,al call delay mov al,02h out dx,al call delay mov al,04h out dx,al call delay mov al,08h out dx,al call delay loop l1 mov al,00h out dx,al jmp l3

l2:mov al,0f0h out dx,al call delay mov al,000h out dx,al call delay loop l2 mov al,00h out dx,al

l3:mov ah,4ch int 21h

delay proc near PUSH CX PUSH BX

MOV BX,0200H FOR3:MOV CX,0FFFFH FOR4:LOOP FOR4 DEC BX JNZ FOR3 POP BX

POP CX RET

delay endp coed ends end start 2.

CODE SEGMENT ASSUME CS:CODE

START:MOV AL,10110100B MOV DX,283H OUT DX,AL

L1: MOV DX,282H ;C口端口号,检验C口的pc4是否为高电平,高电平则输入 IN AL,DX AND AL,20H JZ L1

MOV DX,280H ; A口端口号,读入数据 IN AL,DX

CALL DELAY

MOV DX,281H ; B口端口号,输出至A口 OUT DX,AL

L2: MOV DX,282H IN AL,DX

AND AL,02H ; 判断输出缓冲器是否满,满就等待,不满程序结束 JZ L2 JMP L3

LOOP START L3:MOV AL,00 MOV DX,280H OUT DX,AL

MOV AH,4CH INT 21H

DELAY PROC NEAR PUSH CX

MOV BX,0f00H FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2 DEC BX JNZ FOR1 POP CX

RET

DELAY ENDP CODE ENDS END START

实验十:可编程计数器/定时器8253实验 1.

CODE SEGMENT ASSUME CS:CODE START:

mov dx,283h mov al,10h out dx,al mov dx,280h mov al,04h out dx,al call delay mov dx,280h in al,dx mov dl,al add dl,30h mov ah,2 int 21h ;jmp start mov ah,4ch int 21h

delay proc near push cx

mov bx,1000h for1:mov cx,0ffffh for2:loop for2 dec bx jnz for1 pop cx ret

delay ends end start code ends 2.

CODE SEGMENT ASSUME CS:CODE START:

mov dx,283h mov al,52h out dx,al mov dx,281h mov al,05h out dx,al mov ah,4ch int 21h end start code ends 实验十一:

DATA SEGMENT

ABC DB 'ARE YOU READY?',0DH,0AH,'$' CCC DB 'IRQ10 INTERRUPT NOW !',0DH,0AH,'$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA START:

MOV AX,CS MOV DS,AX MOV DX,OFFSET ZD10 MOV AX,2572H INT 21H

CLI IN AL,21H AND AL,0FBH OUT 21H,AL IN AL,0A1H AND AL,0FBH OUT 0A1H,AL

STI MOV CX,20 LOOP1: PUSH CX MOV AX,DATA MOV DS,AX LEA DX,ABC MOV AH,9 INT 21H CALL DELAY POP CX

LOOP LOOP1

MOV DX,21H IN AL,DX

OR AL,4

OUT 21H,AL MOV DX,0A1H IN AL,DX

OR AL,4 OUT 0A1H,AL MOV AH,4CH INT 21H

ZD10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX

MOV CX,5 AGAIN:

PUSH CX LEA DX,CCC MOV AH,9 INT 21H

CALL DELAY POP CX

LOOP AGAIN POP DX POP CX POP BX POP AX

MOV AL,20H OUT 20H,AL MOV AL,20H OUT 0A0H,AL IRET

ZD10 ENDP

DELAY PROC NEAR MOV BX,02FFH

FOR1: MOV CX,0FFFFH FOR2: LOOP FOR2 DEC BX JNZ FOR1 RET

DELAY ENDP CODE ENDS END START

2、

DATA SEGMENT

ABC DB 'ARE YOU READY?',0DH,0AH,'$' DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA

START: MOV AX,CS MOV DS,AX MOV DX,OFFSET ZD10 MOV AX,2572H INT 21H

CLI IN AL,21H AND AL,0FBH OUT 21H,AL IN AL,0A1H AND AL,0FBH OUT 0A1H,AL

STI MOV CX,20 LOOP1: PUSH CX MOV AX,DATA MOV DS,AX LEA DX,ABC MOV AH,9 INT 21H CALL DELAY POP CX

LOOP LOOP1

MOV DX,21H IN AL,DX

OR AL,4 OUT 21H,AL MOV DX,0A1H IN AL,DX

OR AL,4 OUT 0A1H,AL MOV AH,4CH INT 21H

ZD10 PROC NEAR PUSH AX PUSH BX

PUSH CX PUSH DX

MOV CX,3 AGAIN: PUSH CX MOV DX,280H MOV AL,0FH OUT DX,AL CALL DELAY MOV DX,280H MOV AL,00H OUT DX,AL CALL DELAY POP CX

LOOP AGAIN POP DX POP CX POP BX POP AX

MOV AL,20H OUT 20H,AL MOV AL,20H OUT 0A0H,AL IRET

ZD10 ENDP

DELAY PROC NEAR MOV BX,02FFH

FOR1: MOV CX,0FFFFH FOR2: LOOP FOR2 DEC BX JNZ FOR1 RET

DELAY ENDP CODE ENDS END START

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务