上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
摘要: assume cs:codedata segment db "Beginner's All-purpose Symbolic Instruction Code.",0data endscode segmentbegin: mov ax,data mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h;名称:letterc;功能:将以0结尾的字符串中的小写字母转变为大写字母;参数:ds:si指向字符串首地址letterc: push cx pushf mov cx,0s1: mov... 阅读全文
posted @ 2013-08-30 16:03 tsembrace 阅读(1963) 评论(0) 推荐(1)
摘要: 汇编语言---关于自定义的段占用内存空间在王爽汇编实验5(2)中有这样一个问题:对于如下定义的段:name segment ...name ends如果段中的数据占N个字节,则程序加载后,其实际占用空间当时在做这道题时候,只是通过debug加载多个类似程序,然后观察,得出实际占用空间为16;([N/16]+1)字节。即对于设定的段空间,如果在预设时候的数据不足16字节;则给其分配空间为m{m=([N/16]+1)},编译器会自动给其增补内存空间。当时只是以为这就是规则,而没有深入去考虑为什么制定这样的规则?对于程序而言,数据段的设置是为了方便使用,而使用数据段则需要知道其段地址。举例如下:a 阅读全文
posted @ 2013-08-30 14:14 tsembrace 阅读(3033) 评论(0) 推荐(0)
摘要: 第十一章 标志寄存器一、各标志位说明1、ZF标志*名称:零标志位*位置:第6位*作用:记录相关指令执行后,结果是否为0.如果结果为0,则zf位为1;反之为0.2、PF标志*名称:奇偶标志位*位置:第2位*作用:记录相关指令执行后,结果所有bit位中为1的个数是否为偶数.如果为偶数,则pf位为1;反之为0.3、SF标志*名称:符号标志位*位置:第7位*作用:记录相关指令执行后,结果是否为负.若为负,则sf位为1;反之为0。4、CF标志*名称:进位标志位*位置:第0位*作用:记录相关指令执行后,结果是否向更高位借位(进位)。若有借位(进位),则cf位为1;反之为0.*备注:只相关于无符号数的运算。 阅读全文
posted @ 2013-08-30 14:10 tsembrace 阅读(893) 评论(0) 推荐(0)
摘要: ;程序目标为在屏幕指定位置显示数据;数据分为四项:年份、收入、员工数、人均收入;其中人均收入要通过计算得出;上述数据又分为两大类:字符类:如年份;数字类:(收入、员工数、人均收入);字符类不需要转换可直接存入显示缓冲区;数字类需要先转换为对应字符,再存入显示缓冲区;程序设计思路如下:;第一步:求出人均收入存入data指定区域(设计子函数1:避免溢出的dword/word型运算);第二步:在指定区域显示年份数据(设计子函数2:显示指定内存区的数据到屏幕指定位置);第三步:将指定区域dword型数字数据转换成字符串并显示(设计子函数3:转换dword型数据为字符串,存入指定显示缓冲区);第四步:将 阅读全文
posted @ 2013-08-28 16:34 tsembrace 阅读(2320) 评论(1) 推荐(1)
摘要: 第十章 CALL和RET指令一、ret和retf*ret:功能为:pop ip,实现的是段内近转移;相当于jmp near ptr X*retf功能为:pop ip,pop cs,实现的是远转移;相当于jmp far ptr X二、call指令*call指令分为两步:(1)将当前IP压入栈;(2)设置新IP进行转移。1、依据位移进行转移的call指令call 标号,功能为:push IPjmp near ptr 标号可看出call的转移操作与jmp near ptr一样,均使用位移进行,位移量为16位。2、直接使用转移目的地址的call指令(1)转移目的地址在指令中的call指令:call f 阅读全文
posted @ 2013-08-26 16:33 tsembrace 阅读(1250) 评论(0) 推荐(0)
摘要: 一、编程目标:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'。二、程序分析在屏幕中显示字符即是向显示缓冲区的对应区域写入字符。1、定位屏幕输出位置字符串长度为16,屏幕每行总共为80个字符的输出宽度。要使得居中,则字符左右要各空32个字符位置。即字符串首字符位于每行的第33个字符位,字符串占第33列到第48列。屏幕每页为25行,输出目标为3行,即三个字符串占第12、13、15行。即第一个字符串在显示缓冲区内起始位置为:(B8000H+11*80*2+32*2);第二行的起始地址为在第一行基础上加上80*2;第三行类推。2、字符信息的设置字 阅读全文
posted @ 2013-08-25 18:55 tsembrace 阅读(1733) 评论(0) 推荐(1)
摘要: 第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 阅读(2577) 评论(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 阅读(1590) 评论(0) 推荐(1)
摘要: 其实还真没找到一处满意的地方。CSDN会和博客园同步更新~老梧桐20130821 阅读全文
posted @ 2013-08-21 22:26 tsembrace 阅读(196) 评论(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 阅读(963) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页