博文

直接访问内存[显存]地址(2006-06-18 00:33:00)

摘要:
通过/dev/mem设备文件和mmap系统调用,可以将线性地址描述的物理内存映射到进程
的地址空间,然后就可以直接访问这段内存了。 比如,标准VGA 16色模式的实模式地址是A000:0000,而线性地址则是A0000。设定显
存大小为0x10000,则可以如下操作 mem_fd = open( "/dev/mem", O_RDWR );
vga_mem = mmap( 0, 0x10000, PROT_READ | PROT_WRITE, MAP_SHARED,
mem_fd, 0xA0000 );
close( mem_fd ); 然后直接对vga_mem进行访问,就可以了。当然,如果是操作VGA显卡,还要获得I/O
端口的访问权限,以便进行直接的I/O操作,用来设置模式/调色板/选择位面等等 在工控领域中还有一种常用的方法,用来在内核和应用程序之间高效传递数据: 1) 假定系统有64M物理内存,则可以通过lilo通知内核只使用63M,而保留1M物理内
存作为数据交换使用(使用 mem=63M 标记)。
2) 然后打开/dev/mem设备,并将63M开始的1M地址空间映射到进程的地址空间。 
http://www.fairysky.org/index_Article_Content.asp?fID_ArticleContent=48......

阅读全文(5775) | 评论:0 | 复制链接

从键盘输入一个十进制数(<60000),将其转换为二进制数(2006-03-19 23:20:00)

摘要:从键盘输入一个十进制数(<60000),将其转换为二进制数.
                将二进制数显示在屏幕上.
                        

            data segment
                     x db 34h ;00110100b    ;34h在内存中的存储格式为00110100b
            data ends

            code segment
                     assume cs:code,ds:data
            start:
               &......

阅读全文(4985) | 评论:1 | 复制链接

汇编下DEBUG下面的命令(2006-03-19 23:15:00)

摘要: 一,在debug环境下建立和汇编程序
(1)进入debug
C:\debug 回车
(2)输入程序并汇编
-A 100 回车
0AF0:0100 mov dl,38 回车
0AF0:0102 mov ah,2 回车
0AF0:0104 int 21h 回车
0AF0:0106 int 20h 回车
0AF0:0108 回车
(3)运行程序
-g=100
8
Program terminated normally
如果想分析该程序的指令,可使用反汇编命令U
(4)反汇编
-u 100,108   回车
0AF0:0100 B238          MOV     DL,3
0AF0:0102 B402          MOV     AH,0
0AF0:0104 CD21          INT     21
0AF0:0106 CD20          INT     20
0AF0:0108 56            PUSH    SI
(5)将机器指令程序送到起始地址为200h的单元
-e 200 b2,38,b4,02,cd,21,cd,20,56
-g=200
8
Program terminated no......

阅读全文(6401) | 评论:3 | 复制链接