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...
- [游客] 接下来的呢? 07/06 18:01
- [游客] 这个简单。 07/05 18:56
- [游客] 分析的不错,得出的结论也正确,这下子就理解清楚了。 12/18 22:09
- [yugong] 一定要把它搞定!!! 12/11 22:11
- [游客] 再把研究好好研究研究,一定能做出来。 12/11 21:52
- [yugong] younggay,你知道上面3中那个问题吗? 12/10 16:52
- [younggay] 嗯。不错。 12/09 22:09
- [younggay] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 -------------- 自己按照《汇 12/09 22:06
- [游客] 用汇编剖析C语言,确实很牛很强大。 12/09 10:24
- [zrwxj3581] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 12/09 09:37
- [jcw2008] 元旦快乐! 12/31 23:58
- [jcw2008] Merry Christmas! 12/25 01:17
- [yugong] 字体用彩色请参考实验9的资料! 12/09 20:31
- [zrwxj3581] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 12/09 09:35
[2008-12-18 20:37] 段最大64k,那最小多少??
阅读全文 |
评论次数(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...
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+...
进行如下设置将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() ...
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.直到成功...
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...
(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...
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...
但是我看到第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.直接定址表:通过依据数据,直接计算出所要找...
①如何有效合理地组织数据?(数据标号)
关键就是如何用好数据标号!
a.数据标号与地址标号不同,数据标号既指出内存单元的地址,还指出内存单元的长度(这点很重要)。
b.地址标号只能在代码段中使用,而数据标号还可以在其它段中使用。
c.使用数据标号必须注意设置与其相关的段寄存器。
②相关的编程技术?
a.可以将标号当作数据来定义,此时,编译器交标号所表示的地址当作数据的值(参考P290)。
b.有了数据标号的基础知识,在编程时,可以考虑用内存换效率,建立一种映射关系—表,能过查表而得到相关数据。
c.直接定址表:通过依据数据,直接计算出所要找...
阅读全文 |
评论次数(1) |
浏览次数(783) |
所属类型(汇编作业)
[2008-12-01 21:12] 汇编心脏-------中断
几个问题:
1、内中断、外中断是可供程序员编写?
2、BIOS,DOS 中断只供调用
3、BIOS,DOS是不是内中断?
4、int n 是不是内中断?...
1、内中断、外中断是可供程序员编写?
2、BIOS,DOS 中断只供调用
3、BIOS,DOS是不是内中断?
4、int n 是不是内中断?...
阅读全文 |
评论次数(9) |
浏览次数(850) |
所属类型(汇编作业)
『 查看更多文章 』