上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 第9章 转移指令的原理一、8086转移指令的分类1、无条件转移指令,如jmp;2、条件转移指令,如jcxz;3、循环指令,如loop;4、过程;5、中断二、几种转移指令的详解*基础知识:补码在计算机系统中,数值一律用补码来表示(存储)。正数补码与原码相同,如十进制17;原码为0001 0001;其补码也为0001 0001;负数的补码最高位取1,剩余7位为将负数取绝对值按位取反后+1,得其补码(对8位补码)。如-1;最高位取1,绝对值7位为0000001,按位取反后为1111110;+1后为1111111;则-1的补码为11111111.也可知,对8位补码,其可表示的数值范围为-128~127 阅读全文
posted @ 2013-08-25 16:53 tsembrace 阅读(2513) 评论(2) 推荐(0) 编辑
摘要: 第八章 数据处理的两个基本问题一、寄存器*reg:表示寄存器。8086寄存器包括ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,ss,cs,es,ds,sp,bp,si,di;其中sreg表示段寄存器,包括ds,es,ss,cs.*只有bx,bp,si,di这四个寄存器可用来作为偏移地址寻址。且bx和bp不能同时使用,si和di不能同时使用,具体应用方式如下: [bx],[bp],[si],[di];[bx+si],[bx+di],[bp+si],[bp+di];[bx+si+idata],[bp+di+idata]..etc.*对于使用bx寻址的应用,段地址默认存在d 阅读全文
posted @ 2013-08-25 15:14 tsembrace 阅读(1558) 评论(0) 推荐(1) 编辑
摘要: 其实还真没找到一处满意的地方。CSDN会和博客园同步更新~老梧桐20130821 阅读全文
posted @ 2013-08-21 22:26 tsembrace 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 八十七、回答结果(结构体变量传递)输出依然为3,a。函数f传递的是变量a的一个副本复制。#include "stdio.h"struct student{ int x;char c;} a;main(){a.x=3;a.c='a';f(a);printf("%d,%c",a.x,a.c);}f(struct student b){b.x=20;b.c='y';}八十九、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交 阅读全文
posted @ 2013-08-21 17:02 tsembrace 阅读(938) 评论(0) 推荐(0) 编辑
摘要: 六十八、有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 阅读(867) 评论(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 阅读(4959) 评论(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 阅读(13806) 评论(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 阅读(24350) 评论(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 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 回顾总结:前面花了两大篇幅分别说一维和二维数组,始终在围绕着“地址”说数组。再回头想一下:数组在C语言里是一种构造类型,那么C语言是如何构造它的?C语言先在数组定义时候将其元素依序存储在一段内存中,如果没有“构造”的过程,也就没有数组的概念了,因为如果要访问这段连续的内存,只需要知道这段内存的基址、元素的数据类型以及长度,就可以访问、操作任一个元素了,比如:访问第i个元素就可以用*(Base_address+i*sizeof(element type))进行,这是一种直接的地址偏移的访问方式。而通过构造数组,使得我们可以很方便的通过下标方式array_name[i]访问。C语言构造数组的主要工 阅读全文
posted @ 2013-08-14 11:21 tsembrace 阅读(916) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页