next:
CMP TIMER, 1000/55 JB DONE MOV TIMER,0 MOV AH,2 MOV DL,13 INT 21H
;-------print time--------- 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
CODE ENDS END START
3、VC++中编写内联汇编,将字节数组的每个元素高低四位互换。 char dbyte[] = {0x34,0x45,0x56,0x67,0xaf};
#include
unsigned char change(unsigned char x) {
unsigned char a; _asm }
void main() {
unsigned char dbyte[]={0x34,0x45,0x56,0x67,0xaf}; for(int i=0;i<5;i++){
cout<<\ \ } cout< 四. 实验结果(包括必要的截图) { mov cl,4 } mov al,x shr al,cl shl bl,cl add al,bl mov a,al mov bl,x return a; 实验内容一:设x=2,y=4,z=3,结果在ax查看 实验内容二: 实验内容三: 五. 实验体会 通过本实验,课堂上学到的汇编宏、中断和内联汇编知道得以实践。在现这些知识的过程中,遇到宏调用时参数问题、如何设置新中断、如何16进制输出等问题,通过上网查阅资料及对比老师给的代码等方法解决后获益匪浅,最后将这些正确实现出来。