2012年11月9日
摘要:
端口读写分别用in和out,移位大于1时移位数先存在cl里。CMOS RAM在70h端口输入的是读写的地址,71h存储的地址存储的字节内容。cpu能直接读取的只有寄存器,内存和端口。访问CMOS RAM读取系统时间:View Code 1 ;中断时的入栈顺序是pushf,push cs, push ip 2 assume cs : codesg, ss : stacksg 3 4 stacksg SEGMENT 5 dw 16 dup (0) 6 stacksg ENDS 7 8 9 10 codesg SEGMENT 11 12 start: mo... 阅读全文
摘要:
(1)编写并安装int 7ch中断例程,在dh行,dl列用cl颜色属性从ds:si处输出以0结尾的字符串。编写中断程序时要注意保护现场。安装程序如下: 1 assume cs : codesg, ss : stacksg 2 3 stacksg SEGMENT 4 dw 16 dup (0) 5 stacksg ENDS 6 7 8 9 codesg SEGMENT10 11 start: mov ax, 012 mov es, ax13 mov di, 0200h14 mov ax, codesg15 mov ds, ax16 m... 阅读全文
2012年11月8日
摘要:
0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出‘divided error’,改成直接退出就正常显示了。注意修改ss,sp之间的中断是不响应的。 1 assume cs : codesg, ss : stacksg 2 3 stacksg SEGMENT 4 dw 16 dup (0) 5 stacksg ENDS 6 7 8 9 codesg SEGMENT10 11 start: mov ax, 012 mov es, ax13 mov di, 200h14 mov ax, cs15 mov ds, ax... 阅读全文
2012年11月7日
摘要:
1 ;call 的时候ip入栈 2 assume cs : codesg, ds : datasg, ss : stacksg 3 4 datasg SEGMENT 5 db '19751976197719781979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991',& 阅读全文
2012年11月5日
摘要:
1 ;解决除法溢出的子程序,(商为32位时的溢出) 2 assume cs : codesg, ds : datasg, ss : stacksg 3 4 datasg SEGMENT 5 db 'welcome to masm!' 6 datasg ENDS 7 8 stacksg SEGMENT 9 dw 8 dup (0)10 stacksg ENDS11 12 codesg SEGMENT13 14 15 start: 16 mov ax, stacksg17 mov ss, ax18 mov sp, 1619 20 mov ax, 4240h21 mov dx, 0f 阅读全文
摘要:
1 ;16位汇编 BX、BP、SI、DI 才能间接寻址, ax不行 2 ;程序开始时cx大小是程序的长度 3 ;存储器不能到存储器 mov/add 4 5 assume cs : codesg, ds : datasg, ss : stacksg 6 7 datasg SEGMENT 8 db '19751976197719781979','1977','1977','1977','1977','1977','1977','1977','1977',& 阅读全文
2012年11月3日
摘要:
View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT ...datasg ENDSstacksg SEGMENT ...stacksg ENDScodesg SEGMENTstart: ... ... codesg ENDSEND start上面是基本框架。寄存器有ax, bx, cx, dx, es, ds, ss, si, di, sp, bp, ip, psw下面总结下今天学到的:立即数不能作用于段寄存器;间接寻址不能用ax(即[ax]不能用),只能用bx, si,... 阅读全文
2012年11月2日
摘要:
char * strdup(char * s) 是将s字符串的内容拷贝到malloc的堆内存上,返回指针,注意别忘记free(). 阅读全文
|