第4章例题源程序

合集下载

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第4章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。

〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。

传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。

〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。

.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。

C语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

c语言习题(1-4章)

c语言习题(1-4章)
7.在C语言中,数字091是一个(D)
A.八进制数B.十六进制数C.十进制数D.非法数
8.下列可以正确表示字符型常量的是(B)
A.”a”B.’\t’C.”\n”D.\168
9.已知int i; float f;,正确的语句是(D)
A. int(f)%2.0; B.int(f)%i;
C. int(f%i); D(int)f%i;
float y=123.4567;
printf(“ x=%2d,x=%6d,x=%o,x=%x\n”,x,x,x,x);
printf(“y=%8.4f,y=%8.2f,y=%.5\n”,y,y,y);
}
答案:x=127, x=127, x=177
y=123.4567,y=123.46, y=123.45670
5
#include<stdio.h>
void main()
{
Int x=3,y=5;
Printf(“%d,%d\n”,(x--,--y),x++);
}
答案:4,3
6
#include<stdio.h>
void main()
{
Int a=3;
Printf(“%d,%d\n”,a,(a-=a*a));
}
答案:-6,-6
5 若变量以说明为int类型,要给a、b、c输入数据,以下正确的输入语句是( A )
A scanf (“%d%d%d”,&a,&b,&c);
B scanf ( “%d%d%d,”a,b,c);
C scanf ( “%D%D%D”,&a;&b,&c);
D scanf (“%d%d%d”,&a,&b,&c);

《电力电子技术》第四章习题解答

《电力电子技术》第四章习题解答
从图中可知:
(THD)给出了电流Ud的畸变率:THD=112.28%。
说明:因为输出电流电压直流成分极大,所以谐波含量极高。
(3)交流侧电流Is傅里叶分析如下:
从图中可知:
(THD)给出了电流Ud的畸变率:THD=42.95%。
说明:因为输入电流电压漏感影响不大,所以谐波含量较低。
各次谐波列表如下:
(1) 做出uC1,uC2和ud的波形;
(2) 做出△Ud (p-p)与Ud的比值;
(3) 如果单相全控桥式整流电路参数如下:Us= 240V,Ls= 1mH,Cd= 500F,负载用10A的直流电源表示,计算第(2)问,并与之前的计算结果相比较。
解:
图4.27双重电压整流电路
由FFT分析谐波列表可知,电流的基波分量相位θi=-27.1°、θv=0°。故其相位差为
Φ=-27.1˚(滞后),所以DPF=cosΦ=0.89。
傅里叶分析可知电流的基波分量Is1=120.6A
由谐波畸变率公式
可求得:Is=131.25A,故
4-15.图4.20所示的单相整流电路中,Us= 120V,频率50Hz,Ls= 2mH,Rs= 0.4,负载的瞬时功率pd(t) = 1kW。利用Pspice软件,做出Cd分别为:200、500、1000和1500F时,THD、DPF、PF以及换相压降△Ud(p-p)的函数曲线,并分析直流侧滤波电容的作用。

(4)
∴ 的值与上问相同。
4-6.图4.6(b)是简化的单相整流电路,其中Ls= 0,直流侧电流恒为Id,计算出每个二极管所通过电流的平均值和有效值,以及与Id的比值。
解:如下图所示,
∵Ls= 0时,每个二极管换流是瞬时完成的
∴每个二极管导通时间为一半的周期,而且是上下桥臂有且只有一个导通。

汇编语言程序

汇编语言程序

2020/12/27
16
4.2.4 表达式
在80x86汇编语言中,有数值表达式和地址 表达式两种。
数值表达式 由各种常量与数值运算符连接而成的式子,
称为数值表达式。数值表达式的计算结果是 一个数值,它只有大小而没有属性。 算术、关系、逻辑运算符
2020/12/27
17
地址表达式
由常量、变量、标号、寄存器和数值运算符、 地址运算符组合而成的有意义的式子,称为 地址表达式,单个变量、标号是地址表达式 的最简形式。由于变量和标号具有段 (SEG)、偏移(OFFSET)、类型 (TYPE)3种属性,这就决定了对它们的访 问是多种形式的。
Байду номын сангаас第四章 汇编语言程序
4.1 汇编语句 4.2 汇编语言数据 4.3 8086指令系统 4.4 汇编语言伪指令 4.5 汇编源程序结构 4.6 上机操作过程
2020/12/27
1
4.1 汇编语句
4.1.1 语句种类 汇编语言有3种语句类型,指令语句、伪指令语句、宏指令语
句。
指令语句是可执行语句,在汇编时可产生供机器执行的二进制
2020/12/27
3
2.名字
名字是一串字符序列,最多包含31个字符。在汇 编语言中,名字的应用范围很广,有寄存器名、变 量名、常量名、标号、指令名等等。在语句格式中 作为第一可选成分出现的<名字>,在不同的语句 中具有不同的含义。它在指令语句中表示标号,后 面必须跟有冒号“:”;而在伪指令语句中表示变 量名,常量名,段名,过程名,后面不能有冒号。 这是两种语句在格式上的主要不同之处。
指令语句中的标号和伪指令语句中变量名,段名, 过程名是一种符号地址,可作为汇编指令的一个操 作数,但常量名不是符号地址,不能用做目的操作 数。不同的标号、变量和常量不能同名。

《汇编语言》作业和主要例题

《汇编语言》作业和主要例题

*教材:机械工业出版社主编《80x86汇编语言程序设计》第2版•马力妮CH1思考题:1-2、7-8、12、14【1.1】填空题(1)把汇编语言源程序转换为相应的目标程序的翻译程序称为(),这个翻译过程称为()。

(2)汇编语言源程序经()后,形成目标文件,再经()后,形成可执行文件。

(3)()是计算机中表示信息的最小单位,8位二进制数为一个(),而()是在操作中作为一个单元处理的一组数据。

(4)BCD码有两种存储方式:()和()。

(5)8位二进制的无符号数可表示的最大范围为()。

8位二进制的带符号数可表示的最大范围为()。

【1.2】选择题(1)下面各8位二进制数的补码中,绝对值对小的是()A. 01111111B. 10000001C. 01101101D.11111111(2)补码11001000表示的十进制真值是( )A. 200B. –200C. –56D. -184(3)16位带符号数所能表示的范围是( )A.–32767~+32768B.0~65535C.-65535~+65536D.-32768~+32767(4)与100.5不相等的数据是()A. 64.8HB. 1100100.1BC. 64.5HD. 144.4Q(5)将目标程序转换为可执行程序的是()A. 编辑程序B. 汇编程序C. 连接程序D.调试程序【1.7】将下列二进制数转换为十六进制数和十进制数。

(1)101011 B(2)11010011B (3)10110101B (4)1101100B【1.8】将下列十六进制数转换为二进制数和十进制数。

(1)2DH (2)1512H (3)1C5H (4)21F0H【1.12】将下列十进制数分别用组合型BCD码和非组合型BCD码表示。

(1)35 (2)74 (3)98 (4)14【1.14】有一个8位的数值00110101,回答问题:(1)如果它是一个二进制数,它表示的十进制数是多少?(2)如果它是BCD码,它表示的数是什么?(3)如果它是ASCII码,它表示的字符是什么?CH2思考题:1-3、6--9、11-12、16书面题:10、13-15【2.1】填空题(1)微型计算机硬件系统结构主要是由三部分组成,它们是()、()、()。

第四章程序设计基础

第四章程序设计基础
4-3
程序设 计基础
4.2 程序设计语言
程序设计语言=计算机语言
程序设计语言:用于书写计算机程序的语言。
计算机语言:计算机所能够识别的语言。
文章 程序 汉语、英语 计算机语言 字、词、语法结构 数据表示、表达式 语句结构 写文章 编程序
4-4
程序设 计基础
4.2 程序设计语言
计算机语言的分类
通用语言、专用语言 系统程序设计语言、科学计算语言 事务处理语言、实时控制语言 结构化语言 模块化语言 面向对象语言 机器语言 依赖于计算机硬件(低级语言) 汇编语言 高级语言→与计算机硬件基本无关
4-6
程序设 计基础
4.2 程序设计语言
[例题]用Intel 8086指令系统来编写机器语言程序,要 求完成 7+8=?
指令序号 机器语言程序 指令功能 1 10110000 把一加数 7 送到累加器 AL 中 00000111 2 00000100 把累加器 AL 中的内容与另一数 00001000 相加,结果仍存放在 AL 中 3 11110100 停止操作
4-30
程序设 计基础
4.4 Raptor控制结构
[例4-4] 求ax2+bx+c=0方程的根,a、b、c由键盘输入。
[解] 阅读教材相关内容,思考下列问题:假如将选择条件 disc<0 改变为 disc>=0,那么,流程图将如何变化?
(学生思考并回答,停留3分钟) [答案] Yes和No互换, 或选择结构两条分支路径的所有语句互换。
运行结果:
4-34
程序设 计基础
4.4 Raptor控制结构
[例4-6]百钱买百鸡问题。在例3-4 的基础上对流程图进行修改,使它 适应Raptor编程环境。

ASP网络应用程序设计教程(第二版)例题源代码

ASP网络应用程序设计教程(第二版)例题源代码
有了asp就不必担行环境可用来建立和执行动态的交互式心客户端的浏览器能否运行所编写的代码因为所有的程序都将在服务器端执行
ASP_SE 各章示例代码
【例 1.1】简单静态 HTML 网页示例 <!-- File Name: 世界你好.htm --> <html> <head> <title> 简单静态网页示例 </title> </head> <body> <p align="center"><font color="blue">Hello World!</font></p> <p align="center"><font face="黑体">世界你好!</font></p> </body> </html>
src = "left.htm" >
totay = Date() theTime = Time() If left(theTime,2)> "12" Then
Response.Write "<H3>下午好!</H3>" Else
Response.Write "<H3>上午好!</H3>" End If %> 今天是 <%=totay%>,时间 <%=theTime%> </body> </html>
【例 1.2】客户端动态网页示例 <!-- File Name: hello.htm --> <html> <head> <script language="JavaScript"> function getname(str) {alert("您好! "+ str+"!");} </script> </head> <body> 请输入您的姓名: <form> <input type="text" name="name" onBlur="getname(this.value)" value=""> </form> </body> </html>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例4.1 建立一个命令文件将变量a,b 的值互换,然后运行该命令文件。

程序1:首先建立命令文件并以文件名exch.m 存盘:clear;a=1:10;b=[11,12,13,14;15,16,17,18];c=a;a=b;b=c;ab然后在MA TLAB 的命令窗口中输入exch ,将会执行该命令文件。

程序2:首先建立函数文件fexch.m :function [a,b]=exch(a,b)c=a;a=b;b=c;然后在MA TLAB 的命令窗口调用该函数文件:clear;x=1:10;y=[11,12,13,14;15,16,17,18];[x,y]=fexch(x,y)例4.2 求一元二次方程ax 2+bx+c=0的根。

a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);例4.3 计算分段函数:cos(1)1010x x y x ⎧++=⎪=⎨⎪≠⎩x=input('请输入x 的值:');if x==10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x));endy也可以用单分支if 语句来实现:x=input('请输入x 的值:');y=cos(x+1)+sqrt(x*x+1);if x~=10y=x*sqrt(x+sqrt(x));endy或用以下程序:x=input('请输入x的值:');if x==10y=cos(x+1)+sqrt(x*x+1);endif x~=10y=x*sqrt(x+sqrt(x));endy例4.4输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s');if c>='A' & c<='Z'disp(setstr(abs(c)+abs('a')-abs('A')));elseif c>='a'& c<='z'disp(setstr(abs(c)- abs('a')+abs('A')));elseif c>='0'& c<='9'disp(abs(c)-abs('0'));elsedisp(c);end例4.5某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price<200 没有折扣200≤price<500 3%折扣500≤price<1000 5%折扣1000≤price<2500 8%折扣2500≤price<5000 10%折扣5000≤price 14%折扣输入所售商品的价格,求其实际销售价格。

price=input('请输入商品价格');switch fix(price/100)case {0,1} %价格小于200rate=0;case {2,3,4} %价格大于等于200但小于500rate=3/100;case num2cell(5:9) %价格大于等于500但小于1000rate=5/100;case num2cell(10:24) %价格大于等于1000但小于2500rate=8/100;case num2cell(25:49) %价格大于等于2500但小于5000rate=10/100;otherwise %价格大于等于5000rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格例 4.6 矩阵乘法运算要求两矩阵的维数相容,否则会出错。

先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。

A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr %显示出错原因例 4.7 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。

输出全部水仙花数。

for m=100:999m1=fix(m/100); %求m 的百位数字m2=rem(fix(m/10),10); %求m 的十位数字m3=rem(m,10); %求m 的个位数字if m==m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend例4.8 已知 22221312111n y ++++= ,当n=100时,求y 的值。

y=0;n=100;for i=1:ny=y+1/i/i;endy在实际MA TLAB 编程中,为提高程序的执行速度,常用向量运算来代替循环操作,所以上述程序通常由下面的程序来代替:n=100;i=1:n;f=1./i.^2;y=sum(f)例4.9 设)6sin()(5.0π+=-x e x f x ,求s=⎰πdx x f 30)(。

a=0;b=3*pi;n=1000; h=(b-a)/n;x=a; s=0;f0=exp(-0.5*x)*sin(x+pi/6);for i=1:nx=x+h;f1=exp(-0.5*x)*sin(x+pi/6);s=s+(f0+f1)*h/2;f0=f1;ends上述程序来源于传统的编程思想。

也可以利用向量运算,从而使得程序更加简洁,更赋有MATLAB 的特点。

程序如下:a=0;b=3*pi;n=1000; h=(b-a)/n;x=a:h:b;f=exp(-0.5*x).*sin(x+pi/6);for i=1:ns(i)= (f(i)+f(i+1))*h/2;ends=sum(s)例4.10 写出下列程序的执行结果。

s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=as=s+k;enddisp(s');例4.11 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

sum=0;n=0;x=input('Enter a number (end in 0):');while (x~=0)sum=sum+x;n=n+1;x=input('Enter a number (end in 0):');endif (n>0)summean=sum/nend例4.12 根据矩阵指数的幂级数展开式求矩阵指数。

++++++I =!!3!232n X X X X e nXX=input('Enter X:');E=zeros(size(X));F=eye(size(X));n=1;while norm(F,1)>0E=E+F;F=F*X/n;n=n+1;endEexpm(X) %调用MATLAB矩阵指数函数求矩阵指数例4.13求[100,200]之间第一个能被21整除的整数。

for n=100:200if rem(n,21)~=0continueendbreakendn例4.14若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。

求[1,500]之间的全部完数。

例4.15 用筛选法求某自然数范围内的全部素数。

m=input('m=');p=1:m; p(1)=0;for i=2:sqrt(m)for j=2*i:i:mp(j)=0;endendn=find(p~=0);p(n)关于在p中划去i的倍数(不包括i),可利用矩阵运算一步完成,从而得到更为简洁的程序:m=input('m=');p=2:m;for i=2:sqrt(m)n=find(rem(p,i)==0&p~=i);p(n)=[];endp例4.16编写函数文件求半径为r的圆的面积和周长。

函数文件如下:function [s,p]=fcircle(r)%CIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径%s 圆面积%p 圆周长%2006年2月30日编s=pi*r*r;p=2*pi*r;将以上函数文件以文件名fcircle.m存盘,然后在MA TLAB命令窗口调用该函数:[s,p]=fcircle(10)例4.17利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

函数文件tran.m:function [rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:x=input('Please input x=:');y=input('Please input y=:');[rho,the]=tran(x,y);rhothe例4.18利用函数的递归调用,求n!。

function f=factor(n)if n<=1f=1;elsef=factor(n-1)*n; %递归调用求(n-1)!end在命令文件main2.m中调用函数文件factor.m求s=1!+2!+3!+4!+5!。

s=0;for i=1:5s=s+factor(i);ends例4.19 任意排列问题。

MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列。

编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列。

function Y=rndprm1(X)%RNDPRM1 用for循环产生一个行向量的任意排列%RNDPRM1(X)产生行向量X的任意排列[m,n]=size(X);if m>1error('RNDPRM1 accepts as inputs only vectors');endY=[]; %从一个空矩阵开始l=n; %X的元素个数for i=1:nk=1+fix(l*rand); %随机选择Y的下一个元素的位置x=X(k); %被选择的元素Y=[Y,x]; %将X添加到Y中X(k)=[]; %从X中删除x元素l=l-1 ; %更新X的元素个数end第二个程序用函数的递归调用:function Y=rndprm2(X)%RNDPRM2 用递归调用产生一个行向量的任意排列%RNDPRM2(X)产生一个X的任意排列[m,n]=size(X);l=n;if m>1error('RNDPRM2 accepts as inputs only vectors') endif n<=1Y=X;elsek=1+fix(l*rand); %随机选择Y的下一个元素的位置x=X(k); %被选择的元素X(k)=[]; %从X中删除x元素 Z=rndprm2(X); %将剩下的元素随机排列Y=[Z,x]; %构造输出向量l=l-1;end例4.20nargin用法示例。

相关文档
最新文档