汇编 第5章2

合集下载

汇编语言第5章王爽版(子程序调用指令)

汇编语言第5章王爽版(子程序调用指令)

Call
add64 mov ah,4ch int 21h main endp ;主程序结束
;子过程ADD64开始 add64 proc push bp ; mov bp,sp push bx push si push di push cx pushf ;保存现场 mov si,[bp+4] ; mov bx,[bp+6] mov di,[bp+8] mov cx,[bp+10] ;读取参数 cld
结构化程序设计51子程序的概念52子程序的定义调用和返回53子程序的现场保护与参数传递54子程序设计55子程序的嵌套与递归调用56宏汇编程序设计教学基本内容51子程序的概念1子程序
第5章
结构化程序设计
教学基本内容
5.1 子程序的概念 5.2 子程序的定义、调用和返回 ** 5.3 子程序的现场保护与参数传递** 5.4 子程序设计 *
主程序和子程序间的关系:调用子程序的程序称为主调程序或 主程序,被调用的程序称为子程序。 2、程序中使用子程序的好处 子程序作为一个功能性模块,供一个程序甚至多个程序使用: 可以简化源程序结构; 提高程序的可读性与可维护性; 有利于代码复用; 提高程序的设计效率。
5.2 子程序的定义、调用和返回
1、子程序的定义:由子程序定义伪指令PROC和ENDP来完成。其 格式如下:
code SEGMENT begin: CALL sub1 CALL sub2 CALL sub3 MOV AH, 4CH INT 21H sub1 PROC 、、 RET ENDP PROC 、、 RET ENDP PROC 、、 RET ENDP
sub1 sub2
sub2
sub3
sub3

第五章 DSP的汇编指令..

第五章 DSP的汇编指令..

第五章 TMS320C55x系列DSP的汇编指令
(2) 用户自定义的双指令的并行
这两条指令的并行是通过用户或C编译器定义的。两条指令 同时执行两个操作,用并行符“||”区分并行执行的两条指令。 例:
MPYM *AR1+, *CDP, AC1 ;D单元的一个MAC来完成
||XOR AR2,T1
;A单元的ALU来完成
第五章 TMS320C55x系列DSP的汇编指令
1、高速数字信号处理中常采用汇编语言编程。 2、汇编语言中的两种指令集 (1) 助记符指令集:有助于记忆的符号来表示指令。 (2) 代数指令集:类似于代数表达式,运算关系清楚明了。 注意:DSP的软件开发工具只支持单一的指令形式,不支持助记
符指令和代数指令的混合形式。 3、术语、符号和缩写见P93的表5-1 4、运算符见表5-2
令执行的条件:
TCx(测试/控制标志为1) !TCx(测试/控制标志为0)
TC1&TC2 TC1&!TC2 TC1|TC2 TC1|!TC2 TC1^TC2 TC1^!TC2
!TC1&TC2 !TC1&!TC2 !TC1|TC2 !TC1|!TC2 !TC1^TC2 !TC1^!TC2
第五章 TMS320C55x系列DSP的汇编指令
4、双16比特算术指令: [(1)语法、(2)操作数、(3)状态位] 在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16
比特算术运算,包括加-减、减-加、两个加和两个减运算。
例:
说明: NO:不能并行执行 3:指令的长度为3字节 1:周期为1 X:在X(执行)流水线阶段处理
D – ALU:在D单元ALU执行。 执行结果:AC0=(*AR3)+CARRY+AC1 状态位: Affected by CARRY,C54CM,M40等

第5章 指令与指令系统和汇编语言程序设计(2)

第5章 指令与指令系统和汇编语言程序设计(2)

运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果,6个大写的英文字母 已经被修改为小写字母: 0061 0062 0063 0064 0065 0066
汇编语言程序设计
1 将寄存器R2和R3的内容相加,结果存入R0。 2 将寄存器R2和R3的内容相加,如果有进位,寄存器R0的内 容置1,否则置0 3 若R1的内容是负数则置R0为-1,否则置0(提示:用TEST) 4 检测R3的是奇数,R0的内容置为1,否则置为0。(提示: 用移位检测C的方法来测量一位) 5 将内存中1000H起始的10个单元的内容取出加2送入原地址。 6 已知内存中1000H起始的10个单元中的数是ASC码,将其取 出送显示。 7 将键盘录入的数存到内存1000H单元中。 8 将键盘录入的10个数存到内存1000H-1009H。
有寄存器寻址,寄存器间接寻址等7种。
从表5.1中可以看出, (A组) INC DR 单操作数(DR的内容加1) (B组) LDRR DR,[SR] 双操作数 (DR [SR])
(4)从指令的功能区分
有运算、读写内存类指令,输入输出指令,转移 指令,子程序调用指令,置进位标志指令等。
从表5.1中可以看出, (A组) ADD DR ,SR 加运算 (B组) LDRR DR,[SR] 读写内存
41 42 43 44 45 46
A 2080
MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084) LDRR R0, [R2]
;读内存中的一个字符到R0寄存器
CALA 2100 ;调用子程序(入口地址为2100),完成显示、

汇编语言程序设计(第二版) 钱晓捷 课后答案

汇编语言程序设计(第二版) 钱晓捷 课后答案

汇编语言程序设计(第二版)钱晓捷习题答案第二章(01)2.1(1)AX=1200h(2)AX=0100h(3)AX=4C2Ah(4)AX=3412h(5)AX=4C2Ah(6)AX=7856h(7)AX=65B7h2.2(1) 两操作数类型不匹配(2) IP指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为[BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table的首地址,BX=200Hmov al,8 ;传送欲转换的数字,AL=8xlat ;转换为格雷码,AL=12H2.4mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.5堆栈是一种按“先进后出”原则存取数据的存储区域。

堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。

2.7W=X+Y+24-Z2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,Dmov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同)mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数2.10;(1)xchg的操作数不能是立即数(2不能对CS直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in不支持超过FFH的直接寻址(8)out只能以AL/AX为源操作数第二章(02)2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

DSP课件第五章TMS320LF240x汇编指令系统 共121页

DSP课件第五章TMS320LF240x汇编指令系统 共121页

dma
数据存储器地址的低7位,与数据页面指针(DP)构成一个完
整的16位数据存储器地址。
shift
左移0~15位。
ARn
n为0~7, ARn指定下次的辅助寄存器。
Ind
选择*、*+、*-、*0+、*0-、*BR0+、*BR0- 7中符号之一。
# 一
立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为
AND ind [,ARn] AND #lk [,shift] AND #lk ,16 功能:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储器 单元的内容进行逻辑与操作,结果送累加器的低16位,累加器的高16位 清0。如果使用长立即数寻址,则16位长立即数左移0~16位后和32位的 累加器相与,结果送累加器。 操作:①(PC)+1→PC; ②(ACC(15~0) ) AND (数据存储器地址)→ ACC(15~0);
双字操作码的第2个字。包含16位常数。根据指令不同该
常数可能是长立即数、程序存储器地址、I/O端口或I/O映
射的寄存器地址。
4.2 指令句法描述
4.2.1语法
指令助记符 指令助记符 dma [,shift] 指令助记符 dma,16 指令助记符 ind[,shift[,ARn]] 指令助记符 ind,16[,ARn] 指令助记符 #k 指令助记符 #lk[,shift]
储器地址(pma),只要有一个条件不满足就顺序执行下面的指令。 操作: 如果cond1,cond2,…均满足,则pma→PC,否则PC+2→PC。 注意: 有些条件是不能组合在一起使用的。 例20: BCND PGM191,LEQ,C
13、测试指令BIT

第5章 汇编语言程序

第5章 汇编语言程序

Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。

微机原理与汇编语言实用教程_第5章_运算程序设计及应用举例

微机原理与汇编语言实用教程_第5章_运算程序设计及应用举例

/webnew/
第5章 运算程序设计及应用举例 章
5.1.4 除法指令 1.无符号数除法指令DIV (Unsigned Divide Instruction) 指令格式:DIV SRC (AX) (SRC) (AX)/(SRC)商、AH AH (AX) (AX)/ 功能:如果SRC是字节操作数,则把AX中的无符号数除以SRC,得到8位 的商送AL中,8位的余数送AH中,即:AL AL 8 AH AL (SRC)余数。 如果SRC是字操作数,则把DX和AX中的无符号数除以SRC,得到16位的 商送AX中,16位的余数送DX中,即:AX (DX,AX)/(SRC)余数。 指令对标志位的影响无定义。 (DX,AX)/(SRC)商、DX
IMUL指令除了运算对象是有符号数之外,其它都与MUL指令一样,但计算结果 不同。如果乘积的高半部分有符号扩展,则CF=OF=0,否则CF=OF=1。 例5.8 有符号数0B4H与11H相乘。 MOV AL,0B4H MOV BL,11H IMUL BL ;(AL)=0B4H=-76D ;(BL)=11H=17D ;AX)=(AL)×(BL)=(-76)×17=-1292D=0FAF4H ;CF=OF=1
/webnew/
第5章 运算程序设计及应用举例 章
例5.4 DATA SUB1 SUB2 SUB3 DATA 双精度数带借位减法运算。 SEGMENT DW 7788H,5566H DW 3344H,1122H DW 0,0 ENDS … MOV AX,SUB1 SUB AX,SUB2 MOV SUB3,AX MOV AX,SUB1+2 SBB AX,SUB2+2 MOV SUB3+2,AX …
/webnew/
第5章 运算程序设计及应用举例 章

【精品】第五章《圆》六年级数学上册单元提优精选题汇编2 人教版(含答案)

【精品】第五章《圆》六年级数学上册单元提优精选题汇编2 人教版(含答案)

【精品】第五章《圆》六年级数学上册提优精选题汇编2 人教版一.选择题(共8小题)1.在长6厘米,宽4厘米的长方形纸上画一个最大的圆,圆的半径是()A.6厘米B.4厘米C.2厘米2.在一个长10cm,宽8cm的长方形中画一个最大的圆,这个圆的直径是()A.8cm B.10cm C.5cm3.在一个长8分米,宽6分米的长方形中画一个最大的圆,圆的半径是()分米.A.8 B.6 C.4 D.34.把一张直径4厘米的圆形纸片对折两次得到一个扇形,这个扇形的周长是()厘米.A.4πB.4+πC.πD.π5.如图中圆的直径是6厘米,则正方形的面积是()A.9.42cm2B.18cm2C.25cm2D.28.26cm26.用同样长的一根铅丝,先折成一个最大的圆,再折成一个最大的正方形,他们的面积相比较是()A.圆的面积大B.正方形的面积大C.一样大D.无法比较7.如图:r=3dm,这个扇形的面积是()dm2.A.28.26 B.9.42 C.7.065 D.4.718.如果小圆的直径等于大圆的半径,那么,小圆面积是大圆面积的()A.B.C.2倍二.填空题(共8小题)9.一个圆扩大后,面积比原来多8倍,周长比原来多50.24厘米,这个圆原来的面积是平方厘米.10.在解决“已知圆的直径是10m,求这个圆的面积?”这个问题上,小红根据圆面积公式的推导过程(如下图)分步求出结果,请给小红补上第二步算式.第一步:3.14×10÷2=15.7(m)第二步:.11.在同一圆中,扇形的大小与这个扇形的的大小有关.12.已知大扇形面积是小扇形面积的倍,如果它们的圆心角相等,那么小扇形半径是大扇形半径的.13.若两个圆的半径相等,则它们的周长也相等..14.已知一个半圆工件,未搬动前如图所示,直径平行于地面放置,搬动时为了保护圆弧部分不受损伤、先将半圆工件作如图所示的无滑动翻转,使它的直径贴地面,再将它沿地面向右平移30米,已知半圆工件的直径为4米,则圆心O所经过的路线的长为米.(π取3.14)15.在一个长方形里画一个最大的圆,已知这个圆的周长是18.84厘米,这个长方形的宽是厘米.16.圆沿一条直线滚动时,圆心也在一条上运动,并且当圆滚动一周时,圆心所走过的距离等于圆的.三.判断题(共5小题)17.圆的半径和直径都相等的.(判断对错)18.半径相等的两个圆,它们的周长也一定相等..(判断对错)19.圆不论大小,每个圆的周长都是各自直径的π倍.(判断对错)20.半径为2米的圆,其面积和周长的大小相等..(判断对错)21.扇形的面积大小只与所在圆的半径有关,半径越大,扇形面积越大..(判断对错)四.计算题(共2小题)22.求下面各圆的面积.(1)r=4分米(2)d=3厘米(3)c=12.56米.23.求下面阴影部分的周长.五.操作题(共1小题)24.画一个周长是12.56厘米的圆,并求出它的面积.六.解答题(共3小题)25.公园里有一个直径是8米的圆形花坛,在花坛周围有一条宽2米的小路.这条石子小路的面积是多少?26.如图,已知OC=4cm,OD=2cm;∠AOC=60°,求阴影部分的面积.27.在一个周长为80厘米的正方形纸片内,要剪一个最大的圆,这个圆的半径是多少厘米?周长呢?七.应用题(共4小题)28.王帅响应“绿色出行”的号召,选择骑自行车上学.自行车轮胎的外直径是80cm,王帅从家到学校用了10分钟.如果车轮每分钟转100圈,王帅家距离学校多少米?(车身长度忽略不计)29.如图是一种可折叠的圆桌,直径是1m,折叠后变成了正方形.折叠后的桌面面积是多少平方米?折叠部分是多少平方米?30.一根7米长的绳子,绕树一周还余下0.72米,树的直径是多少米?31.有一个圆形花坛,半径是50米,王叔叔每天早晨绕花坛跑4圈,他每天早晨跑多少米?参考答案与试题解析一.选择题(共8小题)1.解:4÷2=2(厘米)答:这个圆的半径是2厘米.故选:C.2.解:这个圆的直径是8厘米;故选:A.3.解:一个长8分米,宽6分米的长方形中画一个最大的圆,圆的半径是3分米.故选:D.4.解:得到的是一个圆心角是360°÷4=90°的扇形,π×4×+4=π+4(厘米)答:这个扇形的周长是(π+4)厘米.故选:B.5.解:6÷2=3(厘米),3×3÷2×4,=9÷2×4,=4.5×4,=18(平方厘米);答:正方形的面积是18平方厘米.故选:B.6.解:设周长为L,周长为L的正方形面积是=≈0.0625L2;周长为L的圆的面积是π×=≈0.0796L2;比较可知,面积最大的是圆.故选:A.7.解:×60=×60=4.71(平方分米)答:这个扇形的面积是4.71平方分米.故选:D.8.解:小圆面积=π×1×1=π,大圆面积=π×2×2=4π,小圆面积是大圆面积的:π÷4π=.故选:B.二.填空题(共8小题)9.解:50.24÷3.14÷2=8(厘米);8+1=9,9=3×3,3﹣1=2,8÷2=4(厘米);3.14×42,=3.14×16,=50.24(平方厘米);答:这个圆原来的面积是50.24平方厘米.故答案为50.24.10.解:15.7×(10÷2)2=3.14×25=78.5(m2)答:这个圆的面积是78.5平方米.故答案为:15.7×(10÷2)2=78.5(m2).11.解:在同一圆中,扇形的大小与这个扇形的圆心角的大小有关;故答案为:圆心角.12.解:因为,S大扇:S小扇=9:4,它们的圆心角相等,又因为,9=32,4=22,所以,当大小两个扇形的圆心角相等,大扇形面积与小扇形面积的比是9:4时,小扇形半径是大扇形半径的.故答案为:.13.解:因为两个圆的半径相等,设第一个圆的半径是r,则第二个圆的半径也是r,根据圆的周长=2×π×r,则它们的周长也相等,说法正确;故答案为:正确.14.解:先将半圆作如图所示的无滑动翻转,开始到直立圆心O的高度不变,所走路程为圆弧,从直立到扣下正好是一个旋转的过程,球心走的是圆弧,即球在无滑动旋转中通过的路程为圆弧,为2π;再将它沿地面平移30米,可得圆心O所经过的路线长:2π+30=36.28(米)答:圆心O所经过的路线的长为36.28米故答案为:36.28.15.解:18.84÷3.14=6(厘米)答:长方形的宽是6厘米.故答案为:6.16.解:圆沿一条直线滚动时,圆心也在一条直线上运动,并且当圆滚动一周时,圆心所走过的距离等于圆的周长;故答案为:直线,周长.三.判断题(共5小题)17.解:在同圆或等圆中,所有的半径相等,所有的直径也相等;原题没有说是在同圆或等圆,所以说法错误.故答案为:×.18.解:因为两个圆的半径相等,设第一个圆的半径是r,则第二个圆的半径也是r,根据圆的周长=2×π×r,则它们的周长也相等,说法正确;故答案为:√.19.解:根据圆周率的含义得出:所有圆的周长都是各自直径的π倍,说法正确.故答案为:√.20.解:圆周长是:2×3.14×2=12.56(米);圆面积是:3.14×22=3.14×4=12.56(平方米);圆的周长和面积它们不是同类量无法进行比较.故答案为:×.21.解:因为扇形的面积公式S=,所以扇形的面积与圆心角和半径有关;所以原题说法错误;故答案为:×.四.计算题(共2小题)22.解:(1)3.14×42=3.14×16=50.24(平方分米)答:面积是50.24平方分米.(2)3.14×(3÷2)2=3.14×2.25=7.065(平方厘米)答:面积是7.065平方分米.(3)3.14×(12.56÷3.14÷2)2=3.14×4=12.56(平方米)答:面积是12.56平方米.23.解:3.14×8×2=25.12×2=50.24(厘米)答:阴影部分的周长是50.24厘米.(2)3.14×(4+2)=3.14×6=18.84(厘米)答:阴影部分的周长是18.84厘米.(3)3.14×4+4×2=12.56+8=20.56(厘米)答:阴影部分的周长是20.56厘米.五.操作题(共1小题)24.解:12.56÷3.14÷2=4÷2=2(厘米)取一点O为圆心,以2厘米为半径画圆如下:3.14×22=3.14×4=12.56(平方厘米)答:它的面积是12.56平方厘米.六.解答题(共3小题)25.解:内圆半径是:8÷2=4(米)3.14×[(4+2)2﹣42]=3.14×[36﹣16]=3.14×20=62.8(平方米)答:石子路的面积有62.8平方米.26.解:3.14×(42﹣22)×=3.14×12×=6.28(cm2)答:阴影部分的面积是6.28cm2.27.解:正方形的边长是:80÷4=20(厘米)半径:20÷2=10(厘米)圆的周长:3.14×20=62.8(厘米)答:这个圆的半径是10厘米,周长是62.8厘米.七.应用题(共4小题)28.解:80厘米=0.8米车轮的速度:3.14×0.8×100=3.14×80=251.2(米)行驶的路程:251.2×10=2512(米)答:王帅家距离学校2512米.29.解:如图所示:(1)圆内最大正方形的面积:1×(1÷2)÷2×2=0.5(平方米)答:折叠后的桌面面积是0.5平方米.(2)半径:1÷2=0.5米圆的面积:3.14×0.5×0.5=0.785(平方米)折叠部分是:0.785﹣0.5=0.285(平方米)答:折叠部分是0.285平方米.30.解:(7﹣0.72)÷3.14=6.28÷3.14=2(米)答:树的直径是2米.31.解:2×3.14×50×4=314×4=1256(米)答:他每天早晨跑1256米.。

第5章习题答案

第5章习题答案
3. 假定某计算机中有一条转移指令,采用相对寻址方式,共占两个字节,第一字节是操作码, 第二字节是相对位移量(用补码表示),CPU 每次从内存只能取一个字节。假设执行到某转 移指令时 PC 的内容为 200,执行该转移指令后要求转移到 100 开始的一段程序执行,则该 转移指令第二字节的内容应该是多少? 参考答案: 100=200+2+Offset,Offset=100-202=-102=10011010B (注:没有说定长指令字,所以不一定是每条指令占 2 个字节。)
间接寻址(Indirect Addressing)
寄存器寻址(Register Addressing)
寄存器间接(Register indirect Addressing) 偏移寻址(Displacement Addressing)
变址寻址(Indexing)
变址寄存器(index register)
000
RS 型 OP (6 位) 01 R t (3 位) 10 Rs (3 位) RX 型 OP (6 位) 01 R t (3 位) 11 Rx (3 位)
Offset16 (16 位)
XI 型 OP (6 位) 11 Rx (3 位) Offset16 (16 位) 00 Imm16 (16 位)
可执行程序文件(Executable program file)
链接程序(Linker / Link editor)
装入程序(Loader)
全局指针(Global pointer )
伪指令(pseudo-instruction)
CISC(Complex Instruction Set Computer) RISC(Reduced Instruction Set Computer)

第五章_汇编语言程序设计基础

第五章_汇编语言程序设计基础
3
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。

汇编语言第5章作业答案

汇编语言第5章作业答案

习题51.试说明以下指令中各操作数的寻址方式,如果是存储器寻址,请给出其EA计算公式,并说明所使用的段寄存器。

(1)MOV AL,08H 源操作数:立即数寻址目的操作数:寄存器寻址(2)MOV [0120H],BL 源操作数:寄存器寻址目的操作数:直接寻址,EA=0120H,使用DS段寄存器(3)ADD [BX],AL 源操作数:寄存器寻址目的操作数:寄存器间接寻址,EA=(BX),使用DS段寄存器(4)PUSH [SI]0200H 源操作数:变址寻址,EA=(SI)+0200H,使用DS段寄存器目的操作数:隐含寻址(指令中未直接体现)(5)SUB AX,[BP] 源操作数:寄存器间接寻址,EA=(BP),使用SS段寄存器目的操作数:寄存器寻址(6)AND V AR1+4,DL 源操作数:寄存器寻址目的操作数:直接寻址,EA=V AR1+4,使用DS段寄存器(7)PUSHF 源操作数、目的操作数均为隐含寻址(8)MOV ES : [BX]0100H, AL 源操作数:寄存器寻址目的操作数:基址寻址,EA=(BX)+0100H,用ES段寄存器(9)ADC BYTE PTR [BP][SI]0210H,45H源操作数:立即数寻址目的操作数:基址变址寻址,EA=(BP)+(SI)+0210H,使用SS段寄存器(10)OR ARRY[BX][DI],CL源操作数:寄存器寻址目的操作数:基址变址寻址,EA=(BX)+(DI)+ARRY,使用DS段寄存器2.试分析下列汇编指令是否存在语法错误,如果有语法错误存在,请说明是怎样的错误。

(1)PUSH 8243H错误,单操作数指令不能使用立即数(2)POP AL错误,进栈、出栈指令的操作数应为16位(3)MOV AL,6543H错误,源、目的操作数类型不匹配(4)ADD [0100H],64H错误,目的操作数应使用PTR运算符指出类型,否则具有二义性正确的写法:ADD BYTE PTR [0100H],64H,(或使用WORD PTR)(5)ADC V AR1,V AR2错误,8086指令系统的双操作数指令中,必须有一个是寄存器,不能两个操作数同为内存单元(6)MOV DS,ES错误,段寄存器间不能使用MOV指令直接传递数据,必须通过通用寄存器作为中转(7)MOV DS,0620H错误,使用MOV指令向段寄存器传递数据时,不能使用立即数(8)LEA BX,AX错误,L EA指令的源操作数必须为内存单元(9)DEC AL,AH错误,DEC指令为单操作数指令(10)SHR BL,3错误,当移位次数大于1时,在移位指令中特定使用CL寄存器给出移位次数正确的写法:MOV CL, 3SHR BL, CL3.试说明分别执行下列各组指令后,CF、OF、AF、ZF、SF、PF这六个状态标志分别是怎样的取值。

汇编语言课件第05章

汇编语言课件第05章

11/37
第五章 汇编语言顺序程序设计
乘法指令只影响CF和 , 乘法指令只影响 和OF,其它条件码无定义 。 1)MUL: 若乘积的高一半为 ,则CF=OF=0, ) : 若乘积的高一半为0 , 否则, 否则,CF=OF=1。 。 2)IMUL:若乘积的高一半是低一半的符号位的扩展, 2)IMUL:若乘积的高一半是低一半的符号位的扩展, 则,CF=OF=0,否则,CF=OF=1。 ,否则, 。
13/37
第五章 汇编语言顺序程序设计
一、算术指令(5类) 算术指令( 类 1. 加法指令(ADD,ADC,INC) 加法指令( , , ) 2. 减法指令(SUB,SBB,DEC,NEG ,CMP ) 减法指令( , , , 3.乘法指令 MUL,IMUL) 3.乘法指令(MUL,IMUL) 乘法指令( 4.除法指令(DIV,IDIV) 除法指令( 除法指令 , ) 5.十进制调整指令(DAA,DAS等) 十进制调整指令( 十进制调整指令 , 等
12/37
第五章 汇编语言顺序程序设计
如何区分MUL和IMUL 和 如何区分 (1111,1111B)×(1111,1111B) , ) , ) 看作无数号数,上式为: 看作无数号数,上式为:FFH×FFH=FFE01H × 看作带符号数,上式为:(-1) 看作带符号数,上式为:( )×(-1)=1 :( ) 选用MUL或IMUL应根据实际情况而定。 或 应根据实际情况而定。 选用 应根据实际情况而定
21/37
第五章 汇编语言顺序程序设计
本章内容分三节: 本章内容分三节: 5.1 算术指令 5.2 逻辑指令 5.3 顺序程序举例
22/37
第五章 汇编语言顺序程序设计
二、逻辑指令 逻辑运算指令( 1. 逻辑运算指令(5个) 移位指令( 2. 移位指令(8个)

汇编语言的基本语法

汇编语言的基本语法

再例如,对如下的定义,
W1 DW 1, 2, 3, 4, 5, 6, 7 B1 DB 10, 20, 30, 40, 50
N1 EQU B1-W1
N2 EQU $-W1
B2 DB 0 则N1=14,它是从W1开始到B1前为止的一组变量的字节
数; N2=19,它是从W1开始到B2($代表的地址)前为止的一组
PROC NEAR(或FAR) ____________
____________
. . . ____________ RET ENDP
(6) 偏移地址计数器$
汇编程序在对源程序进行汇编的过程中,用偏移地址计数 器$来保存当前正在汇编的指令的偏移地址或伪指令语句 中变量的偏移地址。
用户可将$用于自己编写的源程序中。
例: A DB 20H,30H ; 注释
指令语句是可执行语句,其格式为:
[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][;注释]
其中,指令操作助记符(指令名)是指令语句中不可缺少的 主体,其余部分(方括号中的内容)有时可省略。
名字只能是标号。 注释以分号开头,分号右边的内容将被汇编程序忽略。 例 L: ADD AX,BX ;注释
汇编后:
第一个$+4:$+4=(A+4)+4=(0074H+4)+4=007CH 第二个$+4:$+4=(A+10)+4=(0074H+0AH)+4=0082H
在指令中,$无论出现在指令的任何位置,都代表本条指 令第一个字节的偏移地址。例如,“JZ $+6”的转向地址 是该指令的首地址加上6,$+6还必须是另一条指令的首地 址。再如,在下述指令序列中,

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

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

第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。

〔解答〕CPU:包括运算器、控制器和寄存器组。

运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。

存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。

外部设备:实现人机交换和机间的通信。

〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。

〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。

辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU 需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。

RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。

存储器由大量存储单元组成。

为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。

KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。

〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。

〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

微型计算机原理-第5章(2)微机原理与接口技术(第三版)(王忠民)

微型计算机原理-第5章(2)微机原理与接口技术(第三版)(王忠民)

DS、
INT
ES
数2…0据H
PSP(256 字节)
附段加
CSS:SPSIP定义了代 堆段段段堆码栈栈段的用程用序户
户程序装入情况
第5章 汇编语言程序设计
DSEG SEGMENT STRING1 DB 1,2,3,4,5
DSEG ENDS ESEG SEGMENT
STRING2 DB 5 DUP(?) ESEG ENDS SSEG SEGMENT
CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备
上机过程
第5章 汇编语言程序设计
编辑程序 编辑
汇编程序 汇编
连接程序 连接
手写程序
EDIT .ASM文件
MASM .OBJ文件
LINK .EXE文件
有语法错误 无法正常连接 有算法错误
第5章 汇编语言程序设计
用户程序的装入
完成以下操作: 确定内存可用部分 以便存放要执行的 .exe 文
INC
BX
ADD AL,[BX]
MOV SUM,AL
RET
ENDP CODE END
MAIN
ENDS START
第5章 汇编语言程序设计 第二讲结束
每一种知识都需要努力, 都需要付出,感谢支持!
知识就是力量,感谢支持!
一一一一谢谢大家!!
STACK‘STACK’ DW 10 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME ES:ESEG,SS:SSEG
START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX
LEA SI, STRING1

计算机组成原理与汇编语言程序设计

计算机组成原理与汇编语言程序设计

五、汇编语言程序设计
3.操作数:操作数表示指令助记符的操作对象。
4.注释:注释均以分号开始,它可占一行或多行,一般放在一条语句 的后面。 例:一项是含有4个字段的一条指令语句: LOP: MOV AX,0000H ;将AX清零
标号 指令助记符 操作数 注释
例:以下是含有4个字段的一条指令语句 INC CX
数据定义语句按照伪指令DB,DW和DD所确定的数据大小来给变量(或
存储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式 确定的初值。它们通常有以下几种形式: 1、数值表达式 例如:DATA数据段定义了字节、字、双字变量
五、汇编语言程序设计
DATA SEGMENT
VARB1
5.3汇编语言数据
5.3.1符号定义语句
1、等值伪指令 指令格式:符号 EQU 表达式/符号 EQU伪指令的左移是将表达式的值或表达式赋给EQU左边的符号 例:用符号标识常数、数值表达式 NUM EQU 10H COUN EQU 1234+34-67 VAR DB N令语句格式
标号:指令助记符
操作数的有无、有几个, 取决于指令助记符 翻译后,没有对 应的目标代码
指令语句的一般格式如下: 操作数 ;注释
1.标号:标号是机器指令语句存放地址的符号表示,代表该指令目标 代码的第一个字节地址,后面必须紧跟冒号“:” ,在指令语句中, 是任选字段。 2.指令助记符:指令助记符为语句的核心成分,表示了该语句的操作 类型。
五、汇编语言程序设计
例如: BUF DB 100 DUP(0)
以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存 储单元。
5.3.3数据
一、常数
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
常用的DOS系统功能调用
1.单字符输入(1号调用) 2.单字符显示(2号调用)
3.字符串显示(9号调用)
4.字符串输入(10号调用) 5.结束调用 (4CH号调用)
3
1.单字符输入(1号调用) 功能:从键盘接收一个字符并回显。 格式:MOV AH,1 INT 21H 入口参数:无 出口参数:(AL)= 输入字符的ASCII码 该功能调用检测 ctrl_break 或 ctrl_c ,即若输入 ctrl_break 或 ctrl_c ,则程序退出。 如:输‘a‟,则(AL)=61H。

说明:所有的输入不用配合回车键。
13
上机题:P193 5.2 编写程序,从键盘接收一个小写字母, 然后找出它的前导字符和后续字符,再按顺序显示这三个字 符。 要求: 1. 要求能循环,最后用Ctrl_c结束程序。 2. 要求显示形式为:
说明:所有的输入不用配合回车键。
14
上机题:P193 5.5 要求能循环,最后用Ctrl_c结束程序。 延时程序段(使得每次响铃之间有个间隔,否则只能听见 一声响铃): …
补充:
DOS系统功能调用
(参考 P320 9.1.3 P335 9.2.3 )
演示: 1. 格式:MOV AH,1 INT 21H 2. 格式:MOV DL,待显示字符的ASCII码 MOV AH,2 INT 21H 出口参数:(AL)= 待显示字符的ASCII码 3. 功能:终止当前程序并返回DOS。 格式:MOV AH,4CH INT 21H
;’0’~’9’ ASCII 30H~39H
;’A’~’F’ ASCII 41H~46H
11
单步执行演示
12
上机题:P193 5.1 编程实现,对键盘输入的小写字母用大 写字母显示出来。 要求: 1. 要求能循环,最后用Ctrl_c结束程序。 2. 要求显示形式为: …
start: mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp start code ends end start
mov a[bx], ax continue: add bx, 2 loop loop2 dec di
控制条件
a 100 30 78 99 15 -1 66 45 189 256
ax
jnz loop1
控制条件 内循环 外循环
28
上机题:显示ASCII码表。
在屏幕上以15行×16列的形式显示ASCII码为10H ~ 0FFH 的字符,每行中相邻两个字符之间用空格符(ASCII码为 20H)隔开。 • 提示: (1) 可用BX作为外循环计数器,CX作为内循环计数器。 (2) 每行结束应显示回车及换行符。 (3) 在显示空格或回车、换行符前应该保存DL的内容,方法: PUSH DX。在显示空格或回车、换行符后应该恢复DL的 内容,方法:POP DX 。
33
补充: • 9号DOS功能调用:字符串显示 功能:将当前数据段中以‘$‟结尾的字符串送显示器显示。 格式:LEA DX,待显示字符串首偏移地址 MOV AH,9 INT 21H 入口参数:DS: DX = 字符串的首地址
34
• 10号DOS功能调用:字符串输入 (参考P321 2.) 功能:从键盘上输入一字符串到用户定义的缓冲区中。 (1) 缓冲区的定义方式: data segment buf label byte ;总的名字 maxlen db 32 ;缓冲区最大字符数 actlen db ? ;实际输入的字符数 string db 32 dup (?) ;字符串 data ends (2) 入口参数 DS: DX = 缓冲区首地址 (3) 格式 LEA DX,缓冲区首名字 MOV AH,10 INT 21H
65
78 array_end n 99 105
32
23
data segment x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov ax,n mov array_head-2,-1 初始化 mov si,0 compare: cmp array_end[si],ax 控制条件 jle insert mov bx,array_end[si] mov array_end[si+2],bx 循环体 sub si,2 jmp short compare insert: mov array_end[si+2],ax mov ah,4ch int 21h code ends end start
bx
a 100 30 78 99 15 -1 66 45 189 256
ax
27
mov di, n-1
初始化 初始化
loop1:
mov cx, di
mobx] cmp ax, a[bx+2] jge continue
循环体 循环体
xchg ax, a[bx+2]
1
格式:MOV AH,1 INT 21H 出口参数:(AL)= 输入字符的ASCII码 格式:MOV DL,待显示字符的ASCII码 MOV AH,2 INT 21H 入口参数:(DL)= 待显示字符的ASCII码 出口参数:(AL)= 待显示字符的ASCII码
系统功能调用是DOS为系统程序员及用户提供的一组 常用子程序。DOS规定用中断指令 INT 21H 进入各功能调 用子程序的总入口,再为每个功能调用规定一个功能号以 便进入相应各个子程序的入口。 使用方法: ① 设置所要调用功能的入口参数。 ② 在AH寄存器中存入所要调用功能的功能号。 ③ INT 21H指令自动转入中断子程序入口。 ④ 相应中断子程序运行完毕,可按规定取得出口参数。
18
data segment number dw 1011 0100 0000 0000b count db ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,0 ;cl用于计1的个数 mov ax,number repeat: test ax,0ffffh jz exit ;(ax)=0,结束循环 jns shift ;最高位非1 inc cl shift: shl ax,1 ;ax 左移一位 jmp repeat exit: mov count,cl mov ah,4ch int 21h code ends end start
4
2.单字符显示(2号调用) 功能:将DL寄存器中的字符送显示器显示。 格式:MOV DL,待显示字符的ASCII码 MOV AH,2 INT 21H 入口参数:(DL)= 待显示字符的ASCII码 出口参数:(AL)= 待显示字符的ASCII码 注:如果程序中刚好用到AL,且AL中的信息不能被破坏, 则应先PUSH AX,之后再POP AX。 3.结束调用(4CH号调用) 功能:终止当前程序并返回DOS。 格式:MOV AH,4CH INT 21H
100 99 78 189 256 66 45 30 15 -1
100 99 189 256 78 66 45 30 15 -1
100 189 256 99 78 66 45 30 15 -1
189 256 100 99 78 66 45 30 15 -1
256 189 100 99 78 66 45 30 15 -1
5
第五章 循环与分支程序设计
编制汇编语言程序的步骤: (1) 分析题意,确定算法 (2) 根据算法画出程序框图
(3) 根据框图编写程序
(4) 上机调试程序
6
程序结构:
顺序结构 循环结构
分支结构
子程序结构

复合结构:多种程序结构的组合
7
5.1 循环程序设计
5.1.1 循环程序的结构形式 初始化
初始化
mov bx,0ffffh delay1: mov si,0ffffh delay2: dec si jne delay2 dec bx jne delay1
15
例5.2(改) 在number单元中存放着数1011 0100 0000 0000b,试编 程将该数中1的个数存入count单元中。 • 移位之后,判断测试数是否为0,如果为0则结束循环, 不为0,则继续循环。
19
例5.4 将正数 n 插入一个已整序的正数字数组。该数组的首
地址和末地址分别为array_head和array_end。 • 算法上应该从数组的尾部向头部查找。 • 可以在array_head-2单元中存放‘-1’这个数。
x array_head
-1 3 5 15 23 37 49 52
100 30 78 99 15 -1 66 45 189 256
100 78 99 30 15 66 45 189 256 -1
100 99 78 30 66 45 189 256 15 -1
100 99 78 66 45 189 256 30 15 -1
100 99 78 66 189 256 45 30 15 -1
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
26
data a data code
segment dw 100,30,78,99,15,-1,66,45,189,256 ends segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov di, n-1 ;di控制外循环 loop1: mov cx, di ;cx控制内循环 mov bx, 0 ;bx寻址 loop2: mov ax, a[bx] cmp ax, a[bx+2] jge continue xchg ax, a[bx+2] mov a[bx], ax continue: add bx, 2 loop loop2 dec di jnz loop1 mov ah,4ch int 21h code ends end start
相关文档
最新文档