上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页
摘要: 六十八、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。#includevoid move_array(int a[],int n,int m){ int i; int b[100]; if(m>n) { printf("input error(%d must less than %d).\n",m,n); } else { for(i=0;i#define mynumber 17int pick_num(int a[],int n){ int i=0; //数组下标 ... 阅读全文
posted @ 2013-08-19 19:29 tsembrace 阅读(910) 评论(0) 推荐(0)
摘要: 第七章 更灵活的定位内存地址的方法7.1 and和or指令(1)and/or指令:按位的运算符。不能对内存单元直接操作,须借助寄存器中转。(2)and/or指令的应用:因为不管1还是0,和1进行与运算,都能维持原数不变;与1进行或运算,都能使原数置1.和0进行与运算,都能置0;和0进行或运算,都能维持原数不变。可利用上述特点,进行一些应用,比如转换大小写字母。一个字母的大写ASCII码都比小写ASCII码值小20H。比如A是41H,a是61H。对应二进制码分别为0100 0001H,0110 0001H.如果要将A转成a,直接用A+20H就可以。但如果有一个字母,事先不知道其是大写还是小写,但 阅读全文
posted @ 2013-08-18 16:44 tsembrace 阅读(4993) 评论(3) 推荐(1)
摘要: 在学习王爽汇编第六章的时候,接触到在源程序中不同段的设置,如数据段、栈段、代码段的分别设置。如下格式:assume cs:code,ds:data,ss:stackdata segment ...data endsstack segment ...stack endscode segmentstart: ...code endsend start那么对于data段定义的数据来说,定义后CPU给这段数据的空间大小是如何确定的呢?通过第六章的实验题目,可以知道:数据段空间大小为定义数据所需的16字节的最小整数倍。比如定义了1个字节,系统就给数据段分配16个字节;定义了17个字节,系... 阅读全文
posted @ 2013-08-18 11:50 tsembrace 阅读(14222) 评论(0) 推荐(2)
摘要: 检测点6.1(1)依次用内存0:0~15单元中的内容改写程序中的数据,补全程序:assume cs:codesgcode segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart: mov ax,0 mov ds,ax mov bx,0 mov cx,8s: mov ax,[bx] mov cs:[bx],ax ;确定目标区域段地址和偏移地址 add bx,2 loop s mov ax,4c00h int 21hcodesg endsend star... 阅读全文
posted @ 2013-08-17 16:03 tsembrace 阅读(24559) 评论(6) 推荐(2)
摘要: 二十二、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。#includeint main(){ char i,j,k; //设a\b\c对手 for(i='X';i%c\nb------->%c\nc------->%c\n",i,j,k); } getch(); return 0;}二十四、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。程序分析:第一... 阅读全文
posted @ 2013-08-17 13:44 tsembrace 阅读(1056) 评论(0) 推荐(0)
摘要: 回顾总结:前面花了两大篇幅分别说一维和二维数组,始终在围绕着“地址”说数组。再回头想一下:数组在C语言里是一种构造类型,那么C语言是如何构造它的?C语言先在数组定义时候将其元素依序存储在一段内存中,如果没有“构造”的过程,也就没有数组的概念了,因为如果要访问这段连续的内存,只需要知道这段内存的基址、元素的数据类型以及长度,就可以访问、操作任一个元素了,比如:访问第i个元素就可以用*(Base_address+i*sizeof(element type))进行,这是一种直接的地址偏移的访问方式。而通过构造数组,使得我们可以很方便的通过下标方式array_name[i]访问。C语言构造数组的主要工 阅读全文
posted @ 2013-08-14 11:21 tsembrace 阅读(921) 评论(0) 推荐(0)
摘要: 二、二维数组对于一个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 阅读(498) 评论(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 阅读(6490) 评论(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 阅读(18724) 评论(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 阅读(800) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页