当前位置:文档之家› MSP430 C和汇编的嵌套

MSP430 C和汇编的嵌套

MSP430 C和汇编的嵌套
MSP430 C和汇编的嵌套

72 

2005112

M S P430C 和汇编的嵌套

■中国海洋大学 闫建国

孙克怡

采用C 语言进行程序设计,可大大提高软件开发效

率,增强代码的可靠性、可读性和可移植性,使设计者可以将更多注意力集中在所需实现的功能上。16位精简指令集的MSP430系列单片机,具有很强的处理能力,并具有十进制加法指令和多条模拟指令。采用汇编语言能最大限度发挥MSP430的指令特性,提高执行效率,并且某些时序要求严格的程序必须使用汇编语言设计。实现两种语言的嵌套能使开发者兼顾二者的优势。IAR 公司为MSP430系列单片机提供的C430编译器允许汇编语言模块与C 语言模块进行无缝嵌套。

1 混合编译接口格式

汇编语言使用PUBLIC 导出汇编定义的函数,格式为:

NAM E M YNAM ESPACE PUBL IC FUNCNAM E

RESEG CODE

FUNCNAM E

//用户函数体RET/RETI

//函数返回/中断返回

其中,FUNCNAME 即为用户定义的函数名。C 语言中使

用extern 导入汇编导出的函数,格式为extern FUNC 2NAME (Param1..n ),然后即可在C 中调用该函数。

也可以使用C430编译器创建汇编语言源程序框架,然后由用户在这个框架中加入功能实现部分。下面创建了一个C 语言函数,只声明所引用的变量类型和返回类型,而没有实现部分。

returntype funcname (Param1..n ){

return (result );}

对此函数进行编译。编译时选中Workbench 菜单下的project →Options →ICC430→List →Assembly output file ,这样编译后生成汇编语言源文件(s43)和汇编列表文件(lst )。其中,汇编语言源文件包含了变量声明、参数传

递、函数返回和变量访问等,用户可在此程序框架基础上编写用户代码。

汇编也可以使用C 语言编写的函数。汇编使用EX 2TERN FUNCNAME 导入C 语言函数,然后即可调用该函数。调用格式为CALL #FUNCNAME 。

2 调用规则

2.1 寄存器的使用

C430编译器使用2组寄存器R12~R15来进行参数

传递,因此在两次调用之间R12~R15通常不加保护。其他寄存器R4~R11主要用于存放寄存器变量和中间结果,在两次调用之间必须加以保护。

2.2 堆栈结构和参数传送

每次函数调用都会创建如图1

所示的堆栈结构。

图 1

参数依照从右至左的次序传递。最左边的2个参数用寄存器传递,但是如果它们是结构体或联合,则仍用堆栈传递。其余参数总是用堆栈传递。f (w ,x ,y ,z )的参数

传递如表1所列。

表 1

参 数

小于32位32位

结构体/联合

第4个参数z 堆栈堆栈

堆栈第3个参数y 堆栈

堆栈堆栈第2个参数x R14R15∶R14堆栈第1个参数w

R12R13∶R12堆栈结果

R12

R13∶R12

R12所指区域

 74

74 

2005112

由于通道13(接收通道)的配置与通道12类似,此处不做具体说明。

213 PI NG PONG 缓存

在上述两种情况下,EDMA 和CPU 使用同一块存储区。EDMA 把数据搬到L2,等CPU 处理完数据后,再把数据搬出。这种传输模式与实时信号处理是相违背的。在实时要求很高的情况下,可以把EDMA 配置成PIN

G 图5 PI NG PONG 原理图PON G BU FFERIN G 的模式,其基本思想如图5所示。当EDMA 在处理PIN G BU FFER 时,CPU 在处理PON G -BU FFER ,

都处理完之后相互交换。其逻辑结构图如图6所示。由逻辑结构图可以得到ED 2MA 的配置(以下仅以发送方式加以说明)。为了便于CCS 实现,假设数据存储在外部存储器中。hEdma_ch12=hEdam_ping_xmt ,它们的源地址都是ping_src 。hEdma_pong _xmt 的源地址是pong _src 。hEdma _ping _xmt

图6 PI NG PONG 逻辑结构图

hEdma_pong_xmt 的其余配置都一样。利用EDMA 的L IN K 功能即能实现三者之间的联系。EDMA_link (hEdma_ch12,hEdma_pong_xmt ),EDMA_link (hEdma_pong_xmt ,hEdma_ping_xmt ),

EDMA_link (hEdma_ping_xmt ,hEdma_pong_xmt ),

实现了EDMA 的通道12从两个不同的源地址搬移数

据。同样通道13可以把数据搬移到两个不同的目的地址。

结 语

利用片上、片外以及片上资源之间的关系,构造所需要的逻辑结构图,可以引导大家写出相应的配置程序。本文仅对逻辑结构图进行分析,具体程序还请读者自行给出。希望这样的思想能给读者一定的帮助,也望大家提出更好的学习方法,一起探讨。

参考文献

1 李方慧,等.TMS320C6000系列DSPs 原理及应用.第2版.

北京:电子工业出版社,2003

2 T exas Instruments TMS320C6000Peripherals Reference G uide.

2001

3 Texas Instrument s TMS320C6000Chip Support library A PI

Reference Guide.2003

4 T exas Instruments TMS320C6000DSP EDMA C ontroler Refer 2ence G uide.2004

5 Texad Instrument s Application Using t he TMS320C6000En 2hanced EDMA.2001

(收稿日期:2005208215)

72 3 注意事项

3.1 堆栈空间回收

在C 语言中调用汇编函数时,若参数通过堆栈传递,必须保证堆栈空间回收。C 语言调用汇编函数时,参数自动进栈(若需要),最后压入PC 值。被调用汇编函数从SP 取最后一个进栈参数,依次类推。返回前应执行如下语句:

MOV @SP ,COUN T (SP )ADD COUN T ,SP

COUN T 为堆栈中参数所占的字节数。上述两条语

句用于释放参数占用的堆栈空间。若不执行该语句,则参数将一直存在于堆栈中,多次运行将耗尽RAM 。

3.2 汇编调用C 语言函数

由于被调用C 函数可能使用寄存器,有必要将R4~

R15中所有可能被更改的寄存器进栈保护,并在C 函数返

回后出栈。另外,由于EXTERN 只是将函数的入口地址(标号)导入汇编,函数的参数并没有自动传递,故调用前需要用户将参数放入堆栈或R12~R15中。函数若有返回值,则应在恢复寄存器之前将返回值保存到空闲的寄存器或RAM 中。对于参数需要通过堆栈传递的函数仍然要注意堆栈空间的回收。

3.3 汇编语言编写的中断服务程序

进入中断函数前,系统自动将PC 和SR 进栈。但由于中断可能发生在一个前台函数运行期间,故中断函数入口处应将用到的任意寄存器用PUSH R x 指令保存(包括R12~R15),退出时用POP R x 指令恢复进栈保护的寄存器,最后用RETI 指令装载PC 和SR 并从中断返回。

闫建国:硕士研究生,主要研究方向为单片机控制和智能仪表的构建。孙克怡:教授,主要研究方向为远程抄表和自动化。

(收稿日期:2005207220)

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

单片机习题集(含答案)经典

单片机原理及应用习题 第一章绪论 1-1单项选择 1、计算机中最常用的字符信息编码是()。 (A)ASCII (B)BCD码(C)余3码(D)循环码 2、-31D的二进制补码为.( )。 (A)1110000B (B)11100001B (C)01100000B (D)01100001B 3、十进制29的二进制表示为原码()。 (A)11100010B (B) 10101111B (C)00011101B (D)00001111B 4、十进制0.625转换成二进制数是()。 (A)0.101 (B) 0.111 (C)0.110 (D)0.100 5、十六进制数7的ASCII码是()。 (A) 37 (B) 7 (C) 07 (D) 47 6、十六进制数B的ASCII码是()。 (A) 38 (B) 42 (C) 11 (D) 1011 7、通常所说的主机是指() (A)运算器和控制器(B)CPU和磁盘存储器(C)CPU和主存储器(D)硬件和软件 8、使用单片机实现在线控制的好处不包括( ) (A)精确度高(B)速度快(C)成本低(D)能与数据处理结合 1-2填空 1、计算机中常作的码制有、和。 2、十进制29的二进制表示为。 3、十进制数-29的8位补码表示为。 4、是计算机与外部世界交换信息的载体。 5、十进制数-47用8位二进制补码表示为。 6、-49D的二进制补码为。 7、计算机中的数称为,它的实际值叫。 8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是结构。

1-3 问答题 1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 2、单片机主要应用在哪些领域? 3、为什么80C51系列单片机能成为8位单片机应用主流? 4、举例说明单片机的主要应用领域。 5、二进制数、十进制数、十六进制数各用什么字母尾缀作为标识符?无标识符时表示什么进制数? 6、试比较MCS-51,MSP430,EM78,PIC,M6800及AVP等系列单片机的特点。 第二章 MCS-51单片机的硬件结构与工作原理 2-1 单项选择 1、要MCS-51系统中,若晶振频率屡6MHz,一个机器周期等于( ) μs A 1 B 2 C 3 D 0.5 2、以下不是构成的控制器部件(): A 程序计数器、 B指令寄存器、 C指令译码器、 D存储器 3、以下不是构成单片机的部件() A 微处理器(CPU)、B存储器 C接口适配器(I\O接口电路) D 打印机 4、下列不是单片机总线是() A 地址总线 B 控制总线 C 数据总线 D 输出总线 5、PSW=18H时,则当前工作寄存器是() (A)0组(B)1组(C)2组(D)3组 6、P1口的每一位能驱动() (A)2个TTL低电平负载有(B)4个TTL低电平负载 (C)8个TTL低电平负载有(D)10个TTL低电平负载 7、MCS-51的中断允许触发器内容为82H,CPU将响应的中断请求是( ) (A) T0, (B)T1 (C)串行接口 (D) INT0 8、外部中断0的中断入口地址为() (A)0003H (B)000BH (C)0013H (D)001BH 9、内部定时/计数器T0的中断入口地址为() (A)0003H (B)000BH (C)0013H (D)001BH 10、在中断服务程序中,至少应有一条( )

汇编程序习题

汇编程序习题 1.试分析以下程序段完成什么功能? MOV CL,4 SHL DX,CL SHL AX,CL SHR BL,CL INT 3 2.写出执行以下计算的指令序列: 1)Z←W+(Z-X)2)Z←W-(X+6)-(R+10) 3)Z←(W*X)/(R+6)4)Z←((W-X)/5*Y)*2 3.求两个数56H和67H进行ADD,并求出标志OF,CF,SF,ZF的值。4.阅读程序段,回答下述问题: 1)MOV AX,4000H 2)MOV AX,5678H 3)MOV AX,1234H OV DS,AX MOV BX,99AAH MOV CX,8912H MOV BX,1238H PUSH BX CMP AX,CX MOV〔BX〕,2244H PUSH AX INT 3 MOV AL,〔BX〕 POP DX SF=?OF=?JA成立否? INT 3 POP CX AL=?存储器的物理地址=?DX=?CX=? 5.下列程序能完成什么功能? DATY1 DB 300DUP(?) DATY2 DB 100DUP(?) …… MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0 NEXT:MOV AL,DATY1〔BX〕〔SI〕 MOV DATY2〔DI〕,AL

INC SI INC DI LOOP NEXT 6.下列指令哪些是错误的?并简述之。 1)MOV 15,BX 2)CMP OP1,OP2(假定OP1,OP2是用DB定义的变量) 3)CMP AX,OP1 4)CMP OP1,25H 5)MOV DS,CS 7.下列程序段执行后,BX的值是什么? MOV CL,3 MOV BX,0B8H ROL BX,1 ROR BX,CL 8.编写一个程序段,将内存200H单元开始的256个单元的内容,取绝对值后传送到400H开始的256个单元中。 9.求出下列各数与62A0H之和,并根据结果确定SF,ZF,CF,OF的值。 1)1234H 2)4321H 3)CFA0H 4)9D60H 10.求出下列各数与4AE0H之差,并根据结果确定SF,ZF,CF,OF的值。 1)1234H 2)5D80H 3)9090H 4)EA04H

51汇编程序练习题1

单片机汇编程序设计练习 一、存储器之间的数据传送 1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。 2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。 3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,数据块的长度为32个字节。 4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H 开始的单元中,数据块的长度存放于内部RAM的20H单元。 5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,直到数据内容为0DH时停止传送。 6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。 7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H 开始的单元。 8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H 开始的连续单元中。 二、查表程序设计 1、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其平方值,并存放于40H。 2、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其立方值,并存放于R6。 3、单片机外部ROM TAB1地址开始存放一组ASCII码表,试用查表方法,将R2的内容(范围为0~F)转换为与其对应 的ASCII码,并从P1口输出。 4、使用8051的P1口作为段控驱动共阳 LED数码管,硬件连接如图。 编程实现将8051 R7单元内容(在 00H-09H之间)显示在数码管上。00H-09H 的共阳字形代码如下表所示。 04H 05H 06H 07H 08H 09H

微机原理 典型例题

[问题] 在MOV WORD PTR [0074H],55BBH指令的机器代码中,最后一个字节是 (难度系数:3) [选择答案] A. 00H B. 74H C. 55H D. BBH [正确答案] C [问题] 由于CPU内部的操作速度较快,而CPU访问一次主存所花的时间较长,因此机器周期通常用_____来规定 (难度系数:3) [选择答案] A. 主存中读取一个指令字的最短时间 B. 主存中读取一个数据字的最长时间 C. 主存中写入一个数据字的平均时间 D. 主存中取一个数据字的平均时间 [正确答案] A [问题] 程序控制类指令的功能是_____

(难度系数:3) [选择答案] A. 进行算术运算和逻辑运算 B. 进行主存与CPU之间的数据传送 C. 进行CPU和I/O设备之间的数据传送 D. 改变程序执行的顺序 [正确答案] D [问题] 虚拟存贮器的主要目的是_____ (难度系数:3) [选择答案] A. 提高主存贮器的存取速度 B. 扩大主存贮器的存贮空间,并能进行自动管理和调度 C. 提高外存贮器的存取速度 D. 扩大外存贮器的存贮空间 [正确答案] B [问题] 位操作类指令的功能是______ (难度系数:3) [选择答案] A. 对CPU内部通用寄存器或主存某一单元任一位进行状态检测(0或1) B. 对CPU内部通用寄存器或主存某一单元任一位进行状态强置(0或1)

C. 对CPU内部通用寄存器或主存某一单元任一位进行状态检测或强置 D. 进行移位操作 [正确答案] C [问题] 在微型机系统中,外围设备通过____与主板的系统总线相连接(难度系数:3) [选择答案] A. 适配器 B. 设备控制器 C. 计数器 D. 寄存器 [正确答案] A [问题] 系统总线中地址线的功能是______ (难度系数:3) [选择答案] A. 选择主存单元地址 B. 选择进行信息传输的设备 C. 选择外存地址 D. 指定主存和I/O设备接口电路的地址 [正确答案]

汇编语言程序例题0001

【例】试编写一程序计算以下表达式的值。 w = (v- (x * y + z -540 )) /x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。 DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP (?) DATA ENDS STACK SEGMENT STACK DB 200 DUP (0) STACK ENDS CODESEGMENT ASSUME DS DATA CS: CODE SS: STACK START MOV AX DATA MOV DS AX ; DATA>AX MOV AX X IMUL Y ; (X) * (DX AX MOV CX AX

MOV BX,DX ;(DX AX) T BX : CX ) MOV AX,Z CWD ; (Z)符号扩展 ADD CX,AX ADC BX,DX ; ( BX: CX)+( DX:AX)BX: CX) SUB CX,540 SBB BX,0 ;( BX:CX) - 5 40~BX : CX) MOV AX,V CWD ; (V)符号扩展 SUB AX,CX SBB DX, BX ;( DX: AX)-((BX CX DX: AX) IDIV X ;( DX:AX)/X MOV W,AX ;商5 MOV W+2 DX ;余数D?W+2 MOV AH,4CH INT 21H CODEENDS ;退出DOS 状态 END START 【例】已知某班学生的英语成绩按学号(从 1 开始)从小到大的顺序排列在要查的学 生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下: STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT TAB DB 80 ,85,86,71,79,96 DB 83 ,56,32,66,78,84 NO DB 10 ENGLIST DB ? DATA ENDS CODE SEGMENT ASSUME DS: DATA,SS: STACK,CS: CODE BEGIN: MOV AX,DATA MOV DS,AX LEA BX,TAB MOV AL,NO DEL AL XLAT TAB MOV ENGLIS,H AL MOV AH,4CH INT 21H CODEENDS TAB表中,

汇编语言程序设计练习题

汇编语言程序设计练习题 阅读程序并完成填空: 1.1.MOV BL,85H MOV AL,17H ADD AL,BL AL=?,BL=?,CF=? 2.2.MOV AX,BX NOT AX ADD AX,BX INC AX AX=?,CF=? 3.3.MOV AX,0FF60H STC MOV DX,96 XOR DH,0FFH SBB AX,DX AX=?,CF=? 4.4.MOV BX,0FFFEH MOV CL,2 SAR BX,CL 5.5.MOV BX,0FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH 上述程序段运行后,BX=?,CF=? 6.6.CMP AX,BX JGE NEXT XCHG AX,BX NEXT:CMP AX,CX JGE DONE XCHG AX,CX DONE:。。。。。 试回答: (1)(1)上述程序段执行后,原有AX、BX、CX中最大数存放在哪个寄存器中? (2)(2)这3个数是带符号数还是无符号数?

7.7.在数据段ADDR1地址处有200个字节,要传送到数据段ADDR2处。 MOV AX,SEG ADDR1 MOV DS,AX MOV ES,------- MOV SI,------- MOV DI,OFFSET ADDR2 MOV-----,200 CLD REP--------- 8.8.ADDR1开始的单元中连续存放两个双字数据,将其求和存放在ADDR2开始的单元。 MOV CX,2 XOR BX,BX CLC NEXT:MOV AX,[ADDR1+BX] ADC AX,------- MOV[ADDR2+BX],AX ADD--------,2 ---------NEXT 9.9.设初值AX=1234H,BX=5678H,DX=0ABCDH,则执行下面一段程序后AX=------,BX=----,DX=--------。 MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 10.10.设有一个首地址为ARRAY有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中,有关程序如下:MOV CX,------ MOV AX,0 MOV SI,0 START:ADD AX,-----

汇编语言例子

实验三: 1)题目:在内存中从ARRAY开始的连续三个字节单元存放着30H,40H,50H。编制程序将这三个连续的数据传送到内存TABLE开始的单元。 DATA SEGMENT ARRAY DB 30H,40H,50H 定义数据段 TABLE DB 3 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,ARRAY LEA DI,TABLE MOV CX,3 REP MOVSB JMP $ CODE ENDS END START (2)题目:把内存2000H和3000H字单元的内容相加,结果存入4000H单元。(不考虑溢出) DATA SEGMENT ORG 2000H DW 1234H ORG 3000H DW 5678H ORG 4000H DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,[2000H] ADD AX,[3000H] MOV [4000H],AX JMP $ CODE ENDS END START 实验四 1、数据传送指令和算术运算指令完成NUM1和NUM2相加,结果放入SUM中。

DATA SEGMENT NUM1 DW 0012H,0030H,0FC21H ; 数1 NUM2 DW 3E81H,44E9H,6D70H ; 数2 SUM D W 3 DUP(?) ; 结果单元 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX,3 LEA SI,NUM1 LEA DI,NUM2 LEA AX,SUM HE: MOV BX,[SI] ADD BX,[DI] MOV [AX],BX INC SI INC DI INC AX LOOP HE MOV AH, 4CH ; 返回DOS INT 21H CODE ENDS END START 2、内存中自TABLE开始的七个单元连续存放着自然数0至6的立方值(称作立方表)。;任给一数X(0≤X≤6)在XX单元,查表求X的立方值,并把结果存入YY单元中。;提示用XLAT指令 DATA SEGMENT TABLE DB 0H,1H,2H,3H,4H,5H,6H XX DB 1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TABLE MOV AL,[XX] XLAT MOV DL,AL MOV AH,02H INT 21H JMP $

典型试题

第一章典型试题 一. 填空题 https://www.doczj.com/doc/69101380.html,/wlzx/%BA%CF%B9%A4%B4%F3/%BB%E3%B1%E0%D3%EF%D1%D4%B3%CC%D0%F2%C9%E8%BC%C6/huibian/mulu.htm 1一个十进制数1092其对应的二进制数为____,十六进制为____。 2.某内存单元中存放的二进制代码为94H,其对应一个无符号十进制数为____,一个带符号十进制数为____,一个BCD码数为____。 4.将8存放在一个字单元中,则该单元中的二进制代码是____。 5.机器用8位二进制代码表示带符号数的数值范围是____,用16位二进制代码表示带符号数的数值范围是____。 6.数据26对应的ASCII码为____, 7.8086/8088CPU含有____根地址总线,直接寻址范围为____。 8.8086/8088CPU系统中,I/O端口地址范围是____。 9.8086/8088存储单元的物理地址在逻辑上可分成两个组成部分,即____和____,它们的长度均为____位。 10.8086/8088CPU内部一般用来存放数据的寄存器有____。 11.8086/8088CPU内部用来存放段地址寄存器的有____。 12.在状态标志寄存器F中设置了两种类型的标志位,其中____位作为状态标志位,____位作为控制标志位。 13.一个字单元有二个连续的____单元组成,其中数据的低8位存放在____单元,高8位存放在____单元。 二.单项选择题 1.将汇编语言翻译成机器语言的系统软件()。 A.编译程序 B.解释程序 C.汇编程序 D.编辑程序 2.能够将目标模块或子程序连接起来,生成可执行文件的系统程序是()。 A.DEBUG B.LINK C.MASM D.EDIT 3.设(101)x=(41)16,求x=()。 A.x=6 B.x=10 C.x=8 D.x=2 4.用十六位二进制补码表示一个带符号数,最小数为()。

汇编语言典型例题

典型例题(与考试题型,考试范围相近) 1.应用程序具有3个基本段,可执行指令应该保存于( A )。 A) 代码段B) 数据段C) 堆栈段D) 附加段 2. 8位补码F3H要扩展成16位补码应该是( D ),这样其真值才不变。 A) F0F3H B) 00F3H C) 10F3H D) FFF3H 3. “mov [ebx+8],eax”指令的目的操作数采用( C )寻址方式。 A) 存储器间接B) 寄存器C) 寄存器相对D) 立即数 4. 执行“sar ebx,1”指令后,ebx最高D31位一定等于( D ) A) 0 B) 1 C) D0位D) D30位 5. 在代码段内的-128~127个字节前后范围的跳转,可以用( C )类型名表示。 A) WORD B) DWORD C) SHORT D) FAR 6. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。 A) ReadConsole B) WriteConsole C) MessageBox D) GetStdHandle 7.汇编语言源程序经汇编后不能直接生成( C ) A) OBJ文件B) LST文件C) EXE文件D) CRF文件 8.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。 A) 两个主存储单元 B) 一个主存储单元和一个数据寄存器 C) 两个数据寄存器 D) 一个堆栈单元和一个数据寄存器 9.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。 A)0,0 B) 0,1 C) 1,0 D) 1,1 10.假定esp=00120100h,eax=1f6c2107h,执行指令push ax后,存放数据07h的物理地址是( C )。 A) 00120104h B) 00120101h C) 001200fch D) 001200ffh 11.下列对标志寄存器中标志位产生影响的指令是( B ) A) jmp done B) shl eax, 2 C) call subp D) not eax 12. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D ) A) F098H B) 0098H C) 1098H D) FF98H 13. “mov 80h[esi], eax”指令的目的操作数采用( C )寻址方式。

汇编语言程序例题

【例】试编写一程序计算以下表达式的值。 w=(v-(x*y+z-540))/x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。 DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP() DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX ;DATA→AX MOV AX,X IMUL Y ;(X)*(Y)→DX:AX MOV CX,AX

MOV BX,DX ;(DX:AX)→(BX:CX) MOV AX,Z CWD ;(Z)符号扩展 ADD CX,AX ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX) SUB CX,540 SBB BX,0 ;(BX:CX)-540→(BX:CX) MOV AX,V CWD ;(V)符号扩展 SUB AX,CX SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX) IDIV X ;(DX:AX)/X MOV W,AX ;商→W MOV W+2,DX ;余数DX→W+2 MOV AH,4CH INT 21H CODE ENDS ;退出DOS 状态 END START 【例】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT TAB DB 80,85,86,71,79,96 DB 83,56,32,66,78,84 NO DB 10 ENGLIST DB DATA ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE BEGIN:MOV AX,DATA MOV DS ,AX LEA BX,TAB MOV AL,NO DEL AL XLAT T AB MOV ENGLISH,AL MOV AH,4CH INT 21H CODE ENDS END BEGIN

微机原理期末必考复习题目

微机原理期末复习题目 第一章计算机基本知识 【复习重点】 1、常用数制及其相互间的转换; 2、机器数表示:原码、反码、补码的表示及求法; 3、BCD编码及常用字符的ASCII码; 4、计算机中的常用术语 【典型习题】 ?在计算机中,1KB= 1024 byte。 ?对于十六进制表示的数码19.8H,转换为十进制数时为:25.5 ;用二进制数表示时为:11001.1 B;该数码用压缩BCD码表示时数据为:00100101.0101B或25.5H 。?设机器字长为8位,最高位是符号位。则十进制数–13所对应的原码为:10001101B ;补码为11110011B 。 ?一个8位二进制数用补码方式表示的有符号数的范围是-128~+127 。 ?软件通常分为系统软件和应用软件两大类。 ?微型计算机中主要包括有 A 。 A.微处理器、存储器和I/O接口 B.微处理器、运算器和存储器 C.控制器、运算器和寄存器组 D.微处理器、运算器和寄存器 第二章8080系统结构 【复习重点】 1 、CPU 内部的功能结构; 2 、寄存器阵列结构及各寄存器的功能; 3 、标志寄存器各标志位的名称及含义; 【典型习题】 1、8086中的BIU中有 4 个16 位的段寄存器、一个16 位的指令指针、 6 字节指令队列、20 位的地址加法器。 2、8086 可以访问8 位和16 位的寄存器。 3、8088/8086 CPU中,指令指针(IP)中存放的是 B 。 A.指令B.指令地址 C.操作数D.操作数地址 4、8086CPU内部由哪两部分组成?它们的主要功能是什么? 答:BIU(或总线接口单元):地址形成、取指令、指令排队、读/写操作数及总线控制等所有与外部的操作由其完成。 EU(或指令执行单元):指令译码和执行指令

汇编语言程序例题

【例5.1】试编写一程序计算以下表达式的值。 w=(v-(x*y+z-540))/x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图5.1所示。

DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP(?) DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK START: MOV AX,DATA MOV DS,AX ;DATA→AX MOV AX,X IMUL Y ;(X)*(Y)→DX:AX MOV CX,AX

MOV BX,DX ;(DX:AX)→(BX:CX) MOV AX,Z CWD ;(Z)符号扩展 ADD CX,AX ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX) SUB C X,540 SBB BX,0 ;(BX:CX)-540→(BX:CX) MOV AX,V CWD ;(V)符号扩展 SUB AX,CX SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX) IDIV X ;(DX:AX)/X MOV W,AX ;商→W MOV W+2,DX ;余数DX→W+2 MOV AH,4CH INT 21H CODE ENDS ;退出DOS 状态 END START 【例5.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB 表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:

汇编语言程序格式习题

8086汇编语言程序习题 一. 单项选择题 1.下列选项中不能作为名字项地是(). A.FH B.A3 C.3B D.FADC 2.下列指令不正确地是(). A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确地是(). A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A 4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=(). A.0 B.1 C.2 D.3 5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=(). A.A地偏移地址 B.A单元中地内容 C.100 D.A地段地址 6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元. A.10 B.20 C.22 D.24 7.若定义“C DD 2,4”,则该伪指令分配()个字节单元. A.2 B.4 C.6 D.8 8、伪指令是()规定地汇编说明符,它在源程序汇编时进行说明. A、DEBUG B、LINK C、MASM D、EDIT 9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件. A..LST B..EXE C..MAP D..ASM 10.LINK命令执行后可以生成一个以()为扩展名地文件. A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义()字节. A.1M B.64K C.32K D.16K 12.若要求一个段地起始位置能被256整除地单元开始,在定位方式选项中应选(). A.BYTE B.WORD C.PARA D.PAGE

16 32位微机原理汇编语言及接口技术教程课后习题答案

《16/32位微机原理、汇编语言及接口技术教程》 部分习题参考解答 第1章微型计算机系统概述 〔习题1.2〕 什么是通用微处理器、单片机(微控制器)、DSP芯片、嵌入式系统? 〔解答〕 通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器。 单片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。 DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。 嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。 〔习题1.5〕 说明微型计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。 存储器:存储器是存放程序和数据的部件。 外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。I/O设备通过I/O接口与主机连接。 总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。 〔习题1.6〕 什么是总线?微机总线通常有哪3组信号?各组信号的作用是什么?

〔解答〕 总线:传递信息的共用通道,物理上是一组公用导线。 3组信号线:数据总线、地址总线和控制总线。 (1)地址总线:传输将要访问的主存单元或I/O端口的地址信息。 (2)数据总线:传输读写操作的数据信息。 (3)控制总线:协调系统中各部件的操作。 〔习题1.7〕 简答如下概念: (1)计算机字长 (2)取指-译码-执行周期 (3)ROM-BIOS (4)中断 (5)ISA总线 〔解答〕 (1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。 (2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。 (3)ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。 (4)中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。 (5)ISA总线是指IBM PC/AT机上使用的系统总线。 〔习题1.8〕 下列十六进制数表示无符号整数,请转换为十进制形式的真值: (1)FFH (2)0H (3)5EH (4)EFH 〔解答〕 (1)255 (2)0 (3)94 (4)239 〔习题1.9〕 将下列十进制数真值转换为压缩BCD码: (1)12 (2)24 (3)68 (4)99 〔解答〕 (1)12H

汇编语言程序设计习题集111

16.提示下列指令序列执行后的正确结果是(A )。 MOV BX,OFFFCH MOV CL,2 SAR BX,CL A.3FFFH B.0FFFH C.0FFFCH D.0FFF5H 19. 指令SCAS的寻址方式是()。 A 源操作数为寄存器寻址,目的操作数为寄存器间接寻址 B 源操作数为寄存器间接寻址,目的操作数为寄存器间接寻址 C 源操作数为寄存器间接寻址,目的操作数为寄存器寻址 D 源操作数为寄存器寻址,目的操作数为寄存器寻址 22. 下列指令中不合法的指令是(C)。 A IN AX, 03F8H B MOV BX, AX C REP CMPSB D SHR BX, CL 23. 下列指令中正确的是()。 A MOV SS, 2400H B MOV SS, [2400H] C MOV SS, DS D MOV SS, SP 24. 下列指令中正确的是(A)。 A XCHG AH, AL B XCHG AL, 20H C XCHG DS, AX D XCHG SP, [20H] 29. 下列程序段执行完后,BX寄存器中的内容是(C )。 MOV CL, 3 MOV BX, 0B7H ROL BX, 1 ROR BX, CL A 002DH B 00EDH C C02DH D 000DH 30. 执行下列程序: MOV AX, 0 MOV BX, 1 MOV CX, 100 A: ADD AX, BX INC BX LOOP A HLT 执行后的结果为:(AX)= ( C ),(BX)= ( ). A 5050,99 B 2500,100 C 5050,101 D 2550,102 35. 逻辑位移指令SHR用于(D),而算术位移指令SAR 用于带符号数除2。 A 带符号数减2 B 带符号数除2 C 无符号数乘2 D 无符号数除2 39. 执行下列指令后: MOV AX, 1234H MOV CL, 4 ROL AX, CL DEC AX MOV CX, 4 MUL CX 寄存器AL的值是( B )。 A 60H B 00H C 04H D 08DH 43. 对于下列程序段: AGAIN: MOV ES:[DI],AL INC DI LOOP AGAIN 可用指令()完成相同的功能。 A REP MOVS B B REP LODSB C REP STOSB D REP E SCASB 45. 使得JB指令执行转移操作的条件是()。 A CF=1 B CF=1且ZF=0 C ZF=0 D CF=0或ZF=1 46. 在“先判断后工作”的循环程序结构中,循环执行的次数最少是()。 A 1 B 0 C 2 D 不定 47. 下列指令中,指令()先执行CX-1赋给CX操作,然后再根据CX的值决定是否转移、循环或进行重复操作。 A JNC B REP C JCXZ D LOOP 48. 指令LOOPZ的循环执行条件是()。 A CX≠0并且ZF=0 B CX=0或ZF=0 C CX≠0并且ZF=1 D CX=0或ZF=1 51. 运算型指令的寻址和控制转移型指令的寻址,其不同点在于()。 A 前者取操作数,后者决定程序的转移地址 B 后者取操作数,前者决定程序的转移地址 C 两者都是取操作数 D 两者都是决定程序的转移地址 53. 汇编语言语句格式中的名字项,下列哪一个不正确?() A. FFFFFH B. @Variable C. 0FFFFH D. Third_street 二、填空 11.已知:(AX)=01CDH,(BX)=0AFH,(CX)=0BE02H,CF=1,写出单步执行每条指令时CF,ZF及相关寄存器的内容。 TEST AX,BX ;AX=01CDH,BX=0AFH ;CF= ,ZF= ,(AX)= H,(BX0= H ROL BX,CL ;(BX)=2BC H,(CL)=02H ;CF= ,ZF= ,BX= H,CL= H 13.对于字除法指令,目的操作数存放在AX 中,指令执行后,商放在AL ,余数在AH 中。 15. 在除法指令IDIV BX中,被除数隐含为AX或DX:AX 。 16. 在乘法指令MUL WORD PTE[BX]中,被乘数隐含为AX ,乘积在DX:AX 中。 17. 执行XLAT指令前,要将表的首地址放在BX 中,表内偏移地址放在AL 。 18. 若AL=34H,CL=4,CF=0,执行SAL AL, CL指令后,AL= 40H , CF= 1 。 20. 若DF=1,执行指令LODSB后,SI的内容会自动。 22. 利用指令JO实现转移的条件为。 23. 利用指令JZ后,程序顺序执行下一条指令的条件是。 28. 试分析下列程序段: ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 如果AX和BX的内容给定如下,问该程序执行完后转向哪里? AX BX ⑴ 147B 80DC 转向L1 。 ⑵ B568 54B7 转向L5 。 ⑶ 42C8 608D 转向L1 。 ⑷ D023 9FD0 转向L5 。 ⑸ 94B7 B568 转向L5 。我也不会 30. 条件转移指令的目标地址应在本条件转移指令的下一 条指令地址的字节范围内。 32. 一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元的物理地址为H。 33.假设(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H,执行指令“LES DI,[BX]”后,(DI)=, (ES)= 。 36. 令(AL)=98H, (BL)=12H, 则执行指令MUL BL后,(AX)=。 37. 假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5个数 据,则栈顶的物理地址为。 38. 对于字节乘法指令,其目的操作数存放在中,而其源操作数可以用除立即数以外的任一种寻址方式。其乘积为位,应存放在中。 44.下面程序段完成将字变量OPR1转换成反码和补码分别存入

计算机组成原理与汇编语言课后习题及作业答案

《计算机组成原理与汇编语言》课后习题及作业答案 王建东2006年9月 第一章习题参考答案 1、什么是存储程序工作方式? (P.2.) 答:(1) 事先编制程序 (2) 实现存储程序 (3) 自动、连续地执行程序 2、采用数字化方法表示信息有哪些优点? (P.5.) 答:(1) 抗干扰能力强,可靠性高 (2) 在表示数值时,可以获得很宽的表示范围以及很高的精度。 (3) 数字化的信息可以存储,信息传送也比较容易实现。 (4) 可表示的信息类型与范围及其广泛,几乎没有限制。 (5) 能用逻辑代数等数字逻辑技术进行信息处理,着就形成了计算机硬件设计的基础。 3、如果有7X9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 0000000 0001000 0010100

0100010 0111110 0100010 0100010 0100010 0000000 4、数字计算机的主要特点是什么?(P.16.) 答:(1) 能在程序控制下自动连续地工作 (2) 运算速度快 (3) 运算精度高 (4) 具有很强的信息存储能力 (5) 通用性强,应用领域极其广泛 5、衡量计算机的基本指标有哪些?(P.17.) 答:(1)基本字长 (2)数据通路宽度 (3)运算速度 (4) 主存储器容量 (5) 外存容量 (6) 配置的外围设备及其性能 (7) 系统软件配置

6、举出一种实际计算机,列举出各部件、设备的技术性能及常配置的软件? 略 7、软件系统一般包含哪些部分?列举你熟悉的三种系统软件。 (P.9.) 答:系统软件是一组使计算机良好运行而编制的基础软件。它包括: (1)操作系统如:Windows 2000,Linux,Unix (2)编译程序、解释程序如:C++编译程序,Peal解释程序 (3)各种软件平台如:数据库管理系统 8、对源程序的处理有哪两种基本方式? (P.11.) 答:对源程序的处理有解释和编译两种类型。 解释方式是边解释边执行。如:BASIC 它的优点是支持人机对话方式的程序设计,可以边执行边修改;所需要的主存空间较小。但这种方式执行速度较慢,不能解释那些前后关联较多,较难理解的程序设计语言。 编译方式是将源程序全部翻译成机器语言的指令序列,称为目标程序(目标代码)。执行时,计算机将直接执行目标程序,不再需要源程序与翻译程序。在执行程序时,所需主存小,执行速度也较快。 第二章习题参考答案 1、将二进制数 ( 101010.01 )2 转换为十进制数及BCD码

相关主题
文本预览
相关文档 最新文档