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

我的博客

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

[2008-12-18 20:37] 段最大64k,那最小多少??

assume cs:code, ds:data 

data segment 
data ends 

code segment 
        start:    mov ax, data 
                mov ds, ax 
                mov bx, cs 
                sub ax, bx  
code ends 

end start 

这里,我首先定义了一个空的数据段,接着定义了一个代码短,我们看看这个数据段的起始地址和代码段的起始地址不就知道了一个段的最小字节数了吗 

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

[2008-12-11 20:53] 研究试验5  函数如何接收不定数量的参数

void showchar(int,int,...);  

main()  
{  
   showchar(8,2,'a','b','c','d','e','f','g','h');  
}  

void showchar(int n,int color,...)  
{  
   int a;  
   for (a=0;a!=n;a++)  
   {  
      *(char far *)(0xb8000000+160*10+80+a+a)=*(int *)(_BP+8+a+a);  
      *(char far *)(0xb8000000+16...
阅读全文 | 评论次数(2) | 浏览次数(962) | 所属类型(汇编作业)

[2008-12-09 21:44] 研究试验3  使用内存空间

1、在debug 中对main函数进行单步跟踪:
   进行如下设置将cs:ip指向main地址
   >>a
    15A3:0000 mov ax,15a3
    15a3:0003 mov ds,ax
    15a3:0005 call word ptr [9]
  >>e
    15a3:0009 30.fa   CD.01
这是一种愚蠢的方法
很简单的:
    call 01fa
   g 01fa
(看来自己相关的知识有问题哦)

2、show程序如下:
   main()
  {
   *(char far *)(0xb8000000+...
阅读全文 | 评论次数(2) | 浏览次数(969) | 所属类型(汇编作业)

[2008-12-08 21:43] 研究试验2  使用寄存器

1、在C语言中,同样可以使用寄存器代替变量。

2、tc 2.0 提供的编译器支持如下寄存名:                         _AX ,_BX,_CX, _DX,_SI
_DI,_SP,_BP,_CS,_SS,_ES,_AL,_AH,_BL,_BH,_CL,_CH,_DL,_DH

3、用下面函数可打印出main函数在代码段中的偏移地址!
main()
{
printf("%X\n",main);
}

4、
(1)ur1.c                        相应汇编程序
main()                          ...
阅读全文 | 评论次数(1) | 浏览次数(1022) | 所属类型(汇编作业)

[2008-12-08 20:34] 研究试验1  搭建一个精简的C语言开发环境

1.下载tc2.0,放到d盘 
2.在c盘新建文件夹minic,将tc2.0的tc.exe放进去 
3.然后打开minic里的tc.exe,设置options-directories,将所以路径清空 
4.用minic里的tc.exe编写一个简单的simple.c程序,然后在tc中编译
5.compile-compile to obj,编译成功得到simple.obj文件 
6.compile-link EXE file,提示缺少cos.obj文件 
7.到d盘的tc2.0文件夹找到这个文件,然后复制到minic 
8.继续编译,继续出错(呵呵),然后继续找文件 
9.直到成功...
阅读全文 | 评论次数(3) | 浏览次数(929) | 所属类型(汇编作业)

[2008-12-08 19:15] 字符串的输入——经典

好好欣赏这个程序的逻辑构架,很经典的!!!还有很经典的技巧!
(dh)(dl)=字符串在屏幕上显示的行列位置
assume cs:code
code segment
start: mov dh,12
      mov dl,4
      call getstr
          
      mov ax,4c00h
      int 21h
        
getstr:  push ax

getstrs: mov ah,0    ;用int 16h中断从键盘缓存区取数据
        int 16h          扫描码送入ah,ASCII码送入al
        cmp al,2...
阅读全文 | 评论次数(4) | 浏览次数(1723) | 所属类型(汇编作业)

[2008-12-08 16:33] 第17章 P303程序改进

原程序的缺点是键盘输入r后屏幕上的字会变红,但若继续输入b,g却不会变色,故将程序修改如下:

assume cs:code 
stack segment
    db 10 dup (0)
stack ends
code segment        
start: mov ah,0
       int 16h
           
       mov ah,1
       cmp al,'r'
       je red
       cmp al,'g'
       je green
      cmp al,'b'
       je  blue

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

[2008-12-05 16:40] 第15章 P276程序的另一种思考

书中例题通过重新编写int 9中断例程,来达到目的。
但是我看到第17章时,介绍了用int 16h中断从键盘缓冲区读取数据,从而我产生了一种想法。

不用重新编写以及安装int 9 例程,而直接用int 16中断服务从缓冲区读取数据,如果是ESC,则改变颜色。
 
   程序如下:
assume cs:code
stack segment
  db 10 dup (0)
stack ends

code segment
 start:
        mov ax,stack
        mov ss ,ax
        mov sp,10
                
        m...
阅读全文 | 评论次数(2) | 浏览次数(710) | 所属类型(汇编作业)

[2008-12-03 16:51] 第16章总结

本章要解决的两个问题:
①如何有效合理地组织数据?(数据标号)

关键就是如何用好数据标号!
a.数据标号与地址标号不同,数据标号既指出内存单元的地址,还指出内存单元的长度(这点很重要)。
b.地址标号只能在代码段中使用,而数据标号还可以在其它段中使用。
c.使用数据标号必须注意设置与其相关的段寄存器。

②相关的编程技术?

a.可以将标号当作数据来定义,此时,编译器交标号所表示的地址当作数据的值(参考P290)。
b.有了数据标号的基础知识,在编程时,可以考虑用内存换效率,建立一种映射关系—表,能过查表而得到相关数据。
c.直接定址表:通过依据数据,直接计算出所要找...
阅读全文 | 评论次数(1) | 浏览次数(783) | 所属类型(汇编作业)

[2008-12-01 21:12] 汇编心脏-------中断

几个问题:
1、内中断、外中断是可供程序员编写?
2、BIOS,DOS 中断只供调用
3、BIOS,DOS是不是内中断?
4、int n 是不是内中断?...
阅读全文 | 评论次数(9) | 浏览次数(850) | 所属类型(汇编作业)
『 查看更多文章 』