微机实验
交通灯 MODEL TINY.STACK 100.DATA.CODE START: MOV AX,@DATA MOV DS,AX MOV AL,80H MOV DX,0F003H OUT DX,AL L0: MOV AL,3EH;东西绿灯亮,南北红灯亮 MOV DX,0F001H OUT DX,AL CALL DELAY MOV CX,5 L1: MOV AL,3DH OUT DX,AL CALL DELAY1 MOV AL,3FH OUT DX,AL CALL DELAY1 LOOP L1 MOV AL,0E3H OUT DX,AL CALL DELAY MOV CX,5 L2: MOV AL,0D3H OUT DX,AL CALL DELAY1 MOV AL,0F3H OUT DX,AL CALL DELAY1 LOOP L2 JMP L0 DELAY1 PROC NEAR;0.5S PUSH CX PUSH AX MOV CX,60000 T1: LOOP T1 POP AX POP CX RET DELAY1 ENDP DELAY PROC NEAR;5S PUSH CX PUSH AX MOV CX,10 T2: CALL DELAY1 LOOP T2 POP AX POP CX RET DELAY ENDP END START DATA SEGMENT DAT1 DB "12345" DAT2 DB "12345" DAT3 DB 6 DUP(0)
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,DAT1;指针 LEA SI,DAT2 LEA DI,DAT3 MOV CX,5;循环加五次 CLC;保证个位数相加时 CF=0 L1: MOV AL,[BX];把被加数指针 0 位给 AL ADC AL,[SI] AAA;调整 PUSHF;与下面的 POP 把之前用过的 CF 之类的标志位保存起来 OR AL,30H;将字符转化为 ASCII 码,也可以用 ADD 操作 POPF INC SI;下一位 INC DI INC BX LOOP L1 JNC L2;如果进位标志 CF 位 0 则跳到 L2 MOV [DI],30H;如果 CF=1,则在 DI(和)第六;位(DI=5)位加 30H,变成 ASCII 码的 1 L2: PUSH DI PUSH SI PUSH BX POP SI DEC SI MOV CX,5 CALL PRINT MOV AL,"+" MOV AH,9 INT 21H POP SI DEC SI MOV CX,5 CALL PRINT MOV AL,"=" MOV AH,9 INT 21H POP SI DEC SI MOV CX,6 CALL PRINT HLT CODE ENDS END START PRINT PROC MOV AL,[SI] MOV AH,9 INT 21H DEC SI LOOP PRINT RET PRINT ENDP
data segment d1 db "iamastudent" d2 db "am" data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax xor bx,bx lea si,d1 mov di,offset d2 mov cx,10 L1: mov dx,[di] cmp word ptr [si],dx jnz L2 inc bx L2: inc si loop l1 or bx,30h mov dx,bx mov ah,2 int 21h mov ah,4ch int 21h code ends end start 排序 DATA SEGMENT DA DB 49,50,48,47,46,45,30,29,28,27,44,43,42,41,40,39,38,37,36,35,34,33,32,31,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 DA1 DB "SORT OK!$" DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR AX,AX MOV CX,49 L1: MOV DI,CX MOV BX,0 MOV SI,BX L2: MOV AL,[DA+BX] CMP AL,[DA+BX+1] JGE COTINUE XCHG AL,[DA+BX+1] MOV [DA+BX],AL MOV SI,1 COTINUE:ADD BX,1 LOOP L2 TEST SI,01H JZ EXIT MOV CX,DI LOOP L1 EXIT: LEA DX,DA1 MOV AH,9 INT 21H
MOV CX,50 LEA DI,DA PUSH CX L3: MOV AL,[DI] MOV DL,AL LDM EQU 4 SHR AL,LDM MOV BL,16 MUL BL AND DL,0FH ADD AL,DL INC DI MOV BL,10 DIV BL ADD AL,30H MOV DL,AL CALL PUT1 ADD AH,30H MOV DL,AH CALL PUT1 MOV DL,0 CALL PUT1 LOOP L3 MOV AH, 4CH INT 21H PUT1 PROC PUSH AX MOV AH, 2 INT 21H POP AX RET PUT1 ENDP CODE ENDS END START 回车,回车换行 MOV AH,9 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H OR BL,30H MOV DL,BL MOV AH,2 INT 21H MOV AH,4CH INT 21H
