上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
摘要: 二、二维数组对于一个n维数组,其实质上还是一个一维数组,这个一维数组的每个元素又都是一个(n-1)维数组。。以此类推。复杂的不去深究,就看二维数组a[m][n],实质是一个由m个元素组成的一维数组,每个元素又都是含n个元素的一维数组,这个二维数组共计m*n个元素。对于一个二维数组,它实质上是一个一维数组,但是是什么样的一维数组?这个一维数组的元素是什么?对于int a[2][3],逻辑上是2行×3列的整型矩阵,在内存分布中为线性存储。其定义为:int a[2][3]={{1,2,3},{4,5,6}};容易看出这是含有两个元素的一维数组,每个元素又都是一个含有3个整型数据的一维数组。 阅读全文
posted @ 2013-08-13 21:43 tsembrace 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 一、一维数组1、在内存空间上的存放一个数组在定义后其在内存中各元素的存放是占据一段连续的地址空间,每个元素需要的空间取决于数组类型:整型需要4字节,字符型需要1字节。示例:对于int a[100],在内存中占用100×4=400字节空间;对于char c[100]占据内存空间为100字节。2、数组名2.1数组名是什么?首先数组名是数组的名字,所以数组名表示该数组=。=这绝不是废话,这句话非常有助于后面的理解。其次,数组名还能表示什么?我们都知道,数组名能表示一个地址,如何描述该地址,先直接给出答案:数组名还表示该数组首元素的地址=。=(依然不是废话,而是要注意到:是该数组首元素地址, 阅读全文
posted @ 2013-08-13 21:31 tsembrace 阅读(6435) 评论(0) 推荐(0) 编辑
摘要: (1)编程,向内存0:200~0:23f依次传送数据0~63.assume cs:codecode segment mov ax,20H mov ds,ax mov bx,0 mov cx,64s: mov [bx],bl inc bx loop s mov ax,4c00H int 21Hcode endsend(3)程序功能是将"mov ax,4c00h"之前的指令复制到内存0:200处,补全程序:;只写关键代码;每次复制单字节数据,并通过al中转;程序入口为cs:0(ip=0),所以第一空处传递段地址为cs;接下来需要确定循环次数,即... 阅读全文
posted @ 2013-08-11 18:56 tsembrace 阅读(18516) 评论(1) 推荐(0) 编辑
摘要: 第五章 [BX]和loop指令*Loop指令格式:loop 标号等同步骤:(1)(cx)=(cx)-1;(2)若(cx)!=0,跳转到标号位置继续执行。*Debug的相关命令及说明g命令:g 偏移地址;使得执行到cs:偏移地址处停止;p命令:使Debug程序自动重复执行代码中的循环指令,直到(cx)=0为止。用Debug中直接写入指令,[idata]可以表示((段地址)*16+idata)处的值;而如果在汇编源代码中[idata]会被编译器masm处理为idata这个数值。所以在汇编源代码中当使用立即数来表示偏移地址时,须加前缀以显式表明,比如:ds:[idata]。*示例:计算ffff:0~ 阅读全文
posted @ 2013-08-11 18:36 tsembrace 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 十七、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#includeint main(){ char mychar; int c_num,sp_num,num_num,oc_num,all_num; c_num=sp_num=num_num=oc_num=all_num=0; printf("请输入一串字符,以换行符结尾\n"); mychar=getchar(); while(mychar!='\n') { if(mychar>='0'&&mychar='A')&&( 阅读全文
posted @ 2013-08-11 14:04 tsembrace 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 八、输出9*9口诀。#includeint main(){ int r[9]={1,2,3,4,5,6,7,8,9}; int c[9]={1,2,3,4,5,6,7,8,9}; int i,j; printf("0\t1\t2\t3\t4\t5\t6\t7\t8\t9\n"); for(i=1;iint F_rabbit(unsigned int x){ if(x==0) return 0; if(x==1||x==2) return 2; else return F_rabbit(x-1)+F_rabbit(x-2);}int main(){... 阅读全文
posted @ 2013-08-08 14:19 tsembrace 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 一、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#includeint main(){ int i,j,k; int number=0; for(i=1;iint main(){ long profit,bonus; printf("请输入利润额:\n"); scanf("%ld",&profit); if(profitint main(){ long i,j; int x; for(i=13;iint Judge_leapyear(int year){ if(year%400==0) ... 阅读全文
posted @ 2013-08-06 22:02 tsembrace 阅读(799) 评论(0) 推荐(0) 编辑
摘要: (1)将下面程序保存为t1.asm,生成可执行文件t1.exe。assume cs:codesgcodesg segment mov ax,2000H mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00H int 21Hcodesg endsend(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶内容。step 0:通过debug t1.exe加载程序后:ax=0000H;bx=0000H;c... 阅读全文
posted @ 2013-07-29 20:46 tsembrace 阅读(8965) 评论(0) 推荐(2) 编辑
摘要: 4.1一个源程序从编写到执行的过程第一步:编写汇编源程序;第二步:对源程序进行编译和连接:编译器进行编译,生成目标文件,连接器对目标文件进行连接,生成可执行文件;第三步:执行可执行文件。4.2源程序汇编语言源程序中有两种指令:一种是汇编指令,一种是伪指令。汇编指令对应有机器码,可以被编译为机器指令;而伪指令是由编译器来执行的指令,是辅助编译工作的指令,并不转化成机器码,更不会被执行。程序返回:一个程序要被执行,首先要被加载到内存,然后将CPU控制权交给该程序。比如对于单任务操作系统DOS下,若P1正在执行,要执行P2的话,则P1先要将P2加载到内存,将CPU控制权交给P2,然后P2开始运行,P 阅读全文
posted @ 2013-07-29 19:36 tsembrace 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: 3.1内存中字的存储一个字(word)的长度为16位,即2个字节,而内存单元为单字节,所以要存储一个字长的数据,需要两个内存单元,并且字的高位存储在高地址单元,字的低位存储在低地址单元。比如数据:1188H,为16位数据,即一个字长,要将其存储在编号为0000H开始的内存中,那么编号为0000H的内存单元里存放88H,0001H的内存单元里存放11H。3.2DS和[address]8086CPU中的DS寄存器通常用来存放要访问的数据的段地址,比如要读取地址为10000H单元的内容,可以用如下代码:mov bx,1000Hmov ds,bxmov ax,[0] //这里偏移地址为0,默认段地址在 阅读全文
posted @ 2013-07-29 15:00 tsembrace 阅读(1139) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页