当前位置:首页 > 合肥工业大学汇编语言程序设计实验报告 - 图文
实验四 汇编语言高级编程专题
一. 实验目的
1、汇编语言宏程序设计;
2、 掌握中断服务子程序的编写。 3、 汇编语言与高级语言的混编。
二. 实验内容
1、编写一个宏,求三个数的最小数,原型为:MIN3 x,y,z,min
2、挂接1CH中断,正计时60秒后退出。要求屏幕显示0-59的秒数。 3、VC++中编写内联汇编,将字节数组的每个元素高低四位互换。 char dbyte[] = {0x34,0x45,0x56,0x67,0xaf};
三. 实验过程和程序 1;宏 min3
min3 macro x,y,z mov al,x mov bl,y mov cl,z cmp al,bl ;比较al,bl jae j1 ;bl j5: mov ah,02h ;min bl mov dl,bl or dl,30h int 21h jmp done done: mov ah,4ch int 21h endm DATAS SEGMENT ;未定义数据段数据 DATAS ENDS STACKS SEGMENT ;未定义栈段数据 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX min3 2,1,6 ;找出2 1 6三数中最小数 MOV AH,4CH INT 21H CODES ENDS END START 2. DATA SEGMENT OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0 DATA ENDS STACKS SEGMENT ;未定义 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATA,SS:STACKS START: MOV AX,DATA MOV DS,AX xor ax,ax MOV ES,AX xor cx,cx MOV AX, ES:[1ch*4] MOV OLDISR[0],AX MOV AX,ES:[1ch*4+2] MOV OLDISR[2], AX MOV WORD PTR ES:[1ch*4], OFFSET ISR MOV WORD PTR ES:[1ch*4+2],SEG ISR WAITHERE: CMP ISDONE,1 JNZ WAITHERE EXIT: MOV AX,OLDISR[0] MOV ES:[1ch*4],AX MOV AX,OLDISR[2] MOV ES:[1ch*4+2],AX MOV AX,4C00H INT 21H ISR PROC FAR PUSH DX PUSH AX MOV AX,DATA MOV DS,AX STI INC TIMER AGAIN: mov ah,0bh int 21h or al,al jz j2 MOV AH,8 ;不显示输入的字符 INT 21H CMP AL, 'a' JNE j2 MOV AH,2h MOV DL,10 INT 21H MOV COUNTER,0 j2: CMP TIMER, 1000/55 JB DONE MOV TIMER,0 MOV AH,2 MOV DL,13 INT 21H j3: MOV AX,COUNTER MOV DL,10 DIV DL MOV DH,AH MOV DL,AL MOV AH,2 ADD DL,30H INT 21H mov ah,2 mov dl,dh ADD DL,30H INT 21H inc COUNTER cmp COUNTER,60 JNE DONE MOV ISDONE,1 DONE: PUSHF CALL DWORD PTR OLDISR CLI POP AX POP DX IRET ;中断返回 ISR ENDP CODES ENDS END START 3. #include char dbyte[]={0x34,0x45,0x56,0x67,0x67}; __asm{ mov esi,0 again: mov cl,4 ror dbyte[esi],4 inc esi cmp esi,5
共分享92篇相关文档