汇编网首页登录博客注册
aten的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2009-04-22 00:11] 研究实验5 函数如何接收不定数量的参数

void showchar(char a,int b);
main()
{
 showchar('a',2);
}
void showchar(char a,int b)
{
 *(char far *)(0xb8000000+160*10+80)=a;
 *(char far *)(0xb8000000+160*10+81)=b;
}
 
  用tc.exe对a.c进行编译,连接,生成a.exe.用debug加载a.exe,对函数的汇编代码进行分析。解答这两

个问题:main函数是如何给showchar传递参数的?showchar是如何接收参数的?
  下面是反...
阅读全文 | 评论次数(2) | 浏览次数(1313) | 所属类型(汇编作业)

[2009-04-21 15:13] 推荐博文 研究实验4 不用main函数编程

(1)程序f.c
f()
{
 *(char far *)(0xb8000000+160*10+80)='a';
 *(char far *)(0xb8000000+160*10+80)=2;
}

(1)把程序f.c保存在k:\minic下,对其进行编译,连接。思考相关问题!
问题:1 编译和连接哪个环节会出问题?
        连接时出错!
      2 显示出的错误信息是什么?
        Linker Error:Undefinde symbol'_main'in module c0s
      3 这个错误信息可能与哪个文件相关?
        ...
阅读全文 | 评论次数(14) | 浏览次数(41791) | 所属类型(汇编作业)

[2009-04-21 13:17] 研究试验3 使用内存空间

(1)编写一个程序um1.c:
main()
{
 *(char *)0x2000='a';
 *(int *)0x2000=0xf;
 *(char far *)0x20001000='a';
 _AX=0x2000;
 *(char *)_AX='b';
 _BX=0x1000;
 *(char *)(_BX+_BX)='a';
 *(char far *)(0x20001000+_BX)=*(char *)_AX;
}


1412:01FA 55            PUSH    BP
1412:01FB 8BEC          MOV     B...
阅读全文 | 评论次数(2) | 浏览次数(1401) | 所属类型(汇编作业)

[2009-04-19 23:13] 研究试验2 使用寄存器

(1)编写一个程序ur1.c
main()
{
 _AX=1;
 _BX=1;
 _CX=2;
 _AX=_BX+_CX;
 _AH=_BL+_CL;
 _AL=_BH+_CH;
}
把这个程序保存在minic下,然后,编译,连接,生成ur1.exe.
(2)用Debug加载ur1.exe,用命令查看ur1.c编译后的机器码和汇编代码。
   思考:main函数的代码在什么段中?用Debug怎样找到ur1.exe中main函数的代码?
  分析:我用debug加载ur1.exe,用命令查看代码,发现完全看不出和ur1.exe有什么关系!……
(3)用下面的方法打印出...
阅读全文 | 评论次数(3) | 浏览次数(1147) | 所属类型(汇编作业)

[2009-04-19 22:37] 研究实验1 搭建一个精简的C语言开发环境

终于可以学C了,因为没学过C,所以看得有些激动,呵呵!
  略……
  想办法把所有tc.exe对程序simple.obj进行连接生成.exe文件必须用到的相关文件都找到,拷贝到k:\minic.注意,找的是必须用到的。

  通过连接时的错误,我把要找的文件全都找了出来!
如下:
  C0S.OBJ
  EMU.LIB
  MATHS.LIB
  GRAPHICS.LIB
  CS.LIB
这算是新的开始吧!...
阅读全文 | 评论次数(3) | 浏览次数(1618) | 所属类型(汇编作业)

[2009-04-19 18:10] 课程设计二

课程设计2 
阅读下面的材料: 
开机后,CPU自动进入到FFFF:0单元处执行,此处有一条跳转指令。CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。 
初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。 
硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。 
如果设为从软盘启动操作系统,则int 19h将主要完成以下工作。 
(1)控制0号软驱,读取软盘0道0面1扇区的内容到0:7c00; 
(2)将CS:IP指向0:7c00。 
软盘的0道0面1扇区中装有操作系统引导程序。int 19h将其装...
阅读全文 | 评论次数(2) | 浏览次数(1427) | 所属类型(汇编作业)

[2009-04-13 19:21] 实验17 编写包含多个功能子程序的中断例程

安装一个新的中断例程int 7ch中断例程,实现通过逻辑扇区号对软盘进行读写。
  参数说明:
(1)用ah寄存器传递功能号:0表示读,1表示写;
(2)用dx寄存器传递要读写的扇区的逻辑扇区号;
(3)用es:bx指向存储读出数据或写入数据的内存区。

对于这个实验,真是苦于没软区,对硬盘的读写又不行!就先闪到这吧!

程序如下:
  assume cs:code
code segment
 beg:  jmp strt

       ac db 16 dup (0)        ;用于保存数据供int 13h用,  依次为 读/写,面号,磁道号,扇区号

...
阅读全文 | 评论次数(4) | 浏览次数(1781) | 所属类型(汇编作业)

[2009-04-13 18:20] 检测点17.1

“在int 16h中断例程中,一定有设置IF=1的指令。”这种说法对吗?
  逛了下论坛,最后我认为这种说法是对的!  -_-!!!有点像蒙!

  在int 16h中断中,CPU一定还执行了int 9h号中断

下面是分析:(以我目前知识,只能这样分析,有点带猜)

  int 9h号中断例程是向键盘缓冲区写入数据,int 16H号中断例程是向缓冲区读取键盘输入。
  int 16h号中断有一特点:int 16h号中断例程检测键盘缓冲区,发现缓冲区空,则循环等待,直到缓冲区中有数据。停,先说这,这说明在int 16h中断过程中(int 16h中断在循环等待)能进行键盘输入,说...
阅读全文 | 评论次数(1) | 浏览次数(1317) | 所属类型(汇编作业)

[2009-04-12 22:05] 实验16 编写包含多个功能子程序的中断例程

安装一个新的int 7ch中断例程,为显示输出提供如下功能子程序。
(1)清屏;
(2)设置前景色;
(3)设置背景色;
(4)向上滚动一行。
入口参数说明:
(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行;
(2)对于2、3号功能,用al传送颜色值,(al)∈{0,1,2,3,4,5,6,7}。

因为之前有看到论坛上的帖子,还参考了一下他人的程序,基本了解写程序的问题所在,因为table中取sub1,sub2,sub3,sub4的值来自原来安装程序,如果直接将这些值放到0:200处,将发生错位!主要是处理标号问题!

...
阅读全文 | 评论次数(1) | 浏览次数(804) | 所属类型(汇编作业)

[2009-04-12 18:29] 检测点16.X

检测点16.1

下面的程序将code段中a处的8个数累加,结果存储到了处的双字中,补全程序。
assume cs:code
code segment
   a dw 1,2,3,4,5,6,7,8
   b dd 0

start:mov si,0
      mov cx,8
   s: mov ax,a[si]                ;填
      add word ptr b[0],ax        ;不指明长度编译会警告,但b不是已经指明长度了吗为什么在这还可以再次指定长度
      adc word ptr b[2],0         ;而且...
阅读全文 | 评论次数(1) | 浏览次数(679) | 所属类型(汇编作业)
页码数(4):  1  2  3  4