第2章 汇编语言[35页]
- 格式:pptx
- 大小:197.45 KB
- 文档页数:35
![第2章 汇编语言[35页]](https://imgs-1438308264.cos.ap-hongkong.myqcloud.com/32960141c5da50e2534d7f1a.webp)
![第2章 汇编语言[35页]](https://imgs-1438308264.cos.ap-hongkong.myqcloud.com/32960141c5da50e2534d7f1a.webp)
汇编语言答案
检测点1.1(第8页)(1)13
(2)1024,0,1023
(3)8192,1024
(4)2^30,2^20,2^10
(5)64,1,16,4
(6)1,1,2,2,4
(7)512,256
(8)二进制
注意:1.第4题中的符号'^'指求幂运算(如:2^30指2的30次方)
检测点2.1(第18页)----------------------
(1)写出每条汇编指令执行后相关寄存器中的值。
第一空:F4A3H
第二空:31A3H
第三空:3123H
第四空:6246H
第五空:826CH
第六空:6246H
第七空:826CH
第八空:04D8H
第九空:0482H
第十空:6C82H
第十一空:D882H
第十二空:D888H
第十三空:D810H
第十四空:6246H(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
解答如下:movax,2
addax,ax
addax,ax
addax,ax
检测点2.2(第23页)----------------------
(1)00010H,1000FH
(2)1001H,2000H
第2题说明:
因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法
寻到。
检测点2.3(第33页)
答:CPU修改了4次IP的值。情况如下:
第1次:执行完movax,bx后
第2次:执行完subax,ax后
第3次:读入jmpax后
第4次:执行完jmpax后
最后IP的值为0
实验1查看CPU和内存,用机器指令和汇编指令编程(第33页)-----------------------------------------------------
1.预备知识:Debug的使用
2.实验任务(第43页)
(1)
(2)
(3)
通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在
内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’
第二章 计算机控制系统的组成
第 1 页 共 15 页 第二章 计算机控制系统的组成
第一节 计算机控制系统组成概述
一、计算机控制系统的组成
图2-1(a) 计算机控制系统的组成框图 第二章 计算机控制系统的组成
第 2 页 共 15 页 如图2-1(a)所示,计算机控制系统主要由工业控制机和生产过程两大部分组成。工业控制机是指按生产过程控制的特点和要求而设计的计算机,它包括硬件和软件两部分;生产过程包括被控对象、测量变送、执行机构、电气开关等装置,这些装置有各种类型的标准产品,在设计计算机控制系统时根据需要进行合理选型。
二、工业控制机
工业控制机是指按生产过程控制的特点和要求而设计的计算机,它包括硬件和软件两部分。
1、工业控制机的硬件组成
图2-1(b) 工业控制机的硬件组成原理图
工业控制机的硬件包括主机板、内部总线和外部总线、人机接口、磁盘系统、通信接口、输入输出通道。
(1)主机板:CPU、RAM、ROM等。
作用:进行数值计算、逻辑判断、数据处理。
(2)内部总线和外部总线
内部总线:工业控制机内部各组成部分进行信息传送的公共通道,它是一组信号线的集合。常用内部总线有IBM PC、PCI总线和STD总线 。
外部总线:工业控制机与其它计算机和智能设备进行信息传递的公共通道。RS—232C、USB和IEEE—488通信总线。
(3)人—机接口:键盘、显示器、打印机。
(4)磁盘系统:软盘和硬盘。
(5)通信接口: 工业控制机和其它计算机或智能外设通信的接口。常用RS—第二章 计算机控制系统的组成
第 3 页 共 15 页 232C、USB和IEEE—488接口。
(6)系统支持功能
①监控定时器(看门狗-Watchdog) ②电源掉电检测
③保护重要数据的后备存贮器体 ④实时日历时钟
(7) 输入输出通道
工业控制机和生产过程之间设置的信号传递和变换的连接通道。它包括模拟量输入(AI)通道、模拟量输出(AO)通道、数字量(或开关量)输入(DI)通道、数字量(或开关量)输出(DO)通道。它的作用有两个:
第1页 汇编语言程序设计练习题2 一、单项选择题(答案BDDBA BDADC CCAC CBBDA BDADA BCCB ) 1、使计算机执行某种操作的命令是( ) A.宏指令 B.指令 C.伪指令 D.语句 2、某存储单元的物理地址是12345H,可以作为它的段地址有( )。 A.2345H B.12345H C.12340H D.1234H 3、8088/8086存储器分段,每个段不超过( ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4、计算机能直接识别并执行的语言是( ) A.汇编语言 B.机器语言 C.高级语言 D.低级语言 5. 8086/8088系统执行传送指令MOV时( ) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 6、以下各个指令中正确的是( )。 A. MOV CS, DX B. MOV DS, BP C. IN 20H,AL D. MOV AH, BX 7、下列对OUT指令的叙述正确的是( )。 A. 实现从端口中读出数据 B. 能直接访问的端口范围是0~1KB C. 能访问的端口为64KBit D. 只能用DX做为间接寻址的寄存器 8、已有汇编语句“VAR EQU 1220H”,则语句“mov AX, VAR”中源操作数的寻址方式为( )。 A. 立即寻址 B. 直接寻址 C. 寄存器间接寻址 D. 基址寻址 9、与MOV BX,OFFSET DATA1指令完全等效的指令是( )。 A.MOV BX,DATA1 B.LDS BX,DATA1 C.LES BX,DATA1 D.LEA BX,DATA1 10、下列指令中段默认为堆栈段的是( ) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB BX,[BP][DI] D. MOV DX,[1000H] 11、已知DS=2000H,ES=1000H, SI = 0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEA BX,[SI+80H]”执行后BX的值为( )。 A. 5678H B. 1000H C. 0880H D. 8765H 12、汇编结束语句有( )种格式,为( )。 第2页A.1,END B.1,END 程序的启动地址标号 C.2,END和 END 程序的启动地址标号 D.以上都不正确 13、 指令“CALL FAR PTR SUM”执行时将会向堆栈中顺次压入( )。 A. IP、 CS B. CS、IP C.标志寄存器值、IP D.标志寄存器值,CS、IP 15、在汇编语言程序的开发过程中使用宏功能的顺序是( )。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调开 16、要在程序中定义缓冲区BUF,保留10个字节存储空间的语句是( ) A.BUF DW 10 B.BUF DB 10 C.BUF DB 10 DUP (?) D.BUF DW 10 DUP (?) 17、IBM PC微机中,有符号数是用( )表示的 A、原码 B、补码 C、反码 D、BCD码 18、设SP初值为3050H,执行指令PUSH BX后,SP的值是( ) A.304FH B.304EH C.3048H D.3049H 19、JMP BX指令的寻址方式是( ) A.寄存器寻址 B.寄存器间接寻址 C.段内直接转移寻址 D.段内间接转移寻址 20、DF=1,执行MOVSB指令后 ( ) A.SI减1,DI减1 B.SI加1,DI加1,CX减1 C.SI减1,DI减1,CX减1 D.SI加1,DI加1,CX加1 21.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么源操作数的物理地址为: A. 17500H B. 16500H C. 14500H D. 13500H 22.十六进制数88H,可表示下面几种形式,请找出错误的表示( )。 A. 无符号十进制数136 B. 带符号十进制数-120 C. 压缩型BCD码十进制数88 D. 8位二进制数-8的补码表示 23.指令指针寄存器是( )。 A. IP B. SP C. BP D. PSW 24. 设数据段中已有: DA1 DB 12H,34H DA2 DW 56H,78H 下面有语法错误的语句是( )。 第3页 A. ADR1 DW DA1 B. MOV DA1+1,AX C. MOV BYTE PTR DA2+1,AL D. MOV WORD PTR DA1+1,AL 25. 表示过程定义结束的伪指令是( ) A.ENDP B.ENDS C.END D.ENDM 26.指令MOV AX,[3070H]中源操作数的寻址方式为( ) A.寄存器寻址 B.直接寻址 C.立即寻址 D.间接寻址 27.要求CX=-1时转至MINUS处,下面的指令序列不能实现这一功能的是()。 A、INC CX JZ MINUS B、SUB CX,OFFFFH JZ MINUS C、AND CX,OFFFFH JZ MINUS D、XOR CX,OFFFFH JZ MINUS 28.以下跳转指令中不属于段内跳转的是( ): A.JMP NEAR PTR L1 B.JMP SHORT L2 C.JMP DWORD PTR[BX] D.JNZ L3 30. 对寄存器AX的内容乘以4的正确指令是( )。(CL=2) A.SHR AX,CL B.SHL AX,CL C.ROL AX,CL D.RCR AX,CL 二、填空 1. 8086/8088 CPU可访问2个独立的地址空间,一个为存贮器地址空间,其大小为1MB_个字节;另一个为IO地址_,其大小为__64KB__字节。 2. 计算机中的指令由操作码 字段和操作数 字段两部分组成。 3. n位补码的表数范围为:_________ 4. 在8086段的最大长度是__64KB ___。 5. 代表无符号数运算溢出的标志位是_CF____。 6. LOOP指令的结束条件是_CX=0____。 7. 在实模式下80x86 CPU能够访问的存储器空间为( 1M )byte,指令中访问的操作数的逻辑地址由偏移地址和( 段 )地址来表示。 8. 指令MOV DX, [BX + SI + 100H]的源操作数为( 相对基址变址 )寻址方式。 10. 已知(CS ) = 1500H, (IP) = 0110H, 则8086执行指令的物理地址为 15110H ,如果该指令是长度为2字节的加法指令,则在无中断产生的情况下,执行完该指令后IP = 15112H。 第4页11. 现有(DS) = 3000H, (BX) = 0100H, (SI) = 0002H, (30100H) = 12H, (30101H) = a7H,(30102H) = 35H,30103H = 98H,填写每条指令执行后AX的值 (1) MOV AX, 1200H AX = 1200H (2) MOV AX, [BX] AX = 0A712H (3) MOV AX, [BX + SI] AX = 9835H (4) MOV AX, [SI + 100H] AX =0A712H 12. 设(CS) = 1000H, BX = 1100H,则执行指令JMP BX后,IP = 1100H ,指令的物理地址为 11100H 13、调用程序、子程序传送参数的方法通常有寄存器_、_存储器(或者变量)_和_堆栈_三种方法。 四、简答 1、 宏指令和子程序的区别。 子程序:在程序执行期间被调用,只占用自身大小的一段空间。 优点:模块化,节省内存,可被多次调用,编程效率高。 缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适于子功能代码较长、调用比较频繁的情况。 宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。 优点:参数传送简单,执行效率高。 缺点:不节省空间,适于子功能代码较短、传参 较多的情况。 2、 子程序声明中主要有哪些属性可以指定? NEAR FAR 3、 在8086哪些寄存器可以用来指示存储器地址? BX BP SI DI 4、 如果一个文件ex1.asm中定义了一个字节变量BYTE1,而文件file2.asm中将使用该变量,请问如何实现? 第5页在ex1.asm中用PUBLIC 声明BYTE1,在file2.asm中用EXTRN引用BYTE1 ex1.asm public BYTE1 file2.asm EXTRN BYTE1:BYTE 5.8086中基本结构寄存器的通用寄存器有哪些,段寄存器又有哪些? 通用寄存器AX BX CX DX BP SI DI 段寄存器CS DS ES SS 五、按要求回答问题。 1. 以下的程序实现将内存单元20000H开始的100个字节初始化为‘a’,请将程序补充完整。 MOV DS,2000H MOV SI,_0000 MOV _CX_,100 MOV _AL_,’a’ _REP STOSB__ 2. 设num1,num2都为字变量,请指出下面语句序列的功能 MOV AX,num1 XOR DX,DX OR AX,AX JNS SKIP MOV DX,OFFFFH SKIP: IDIV num2 带符号字型数据num1除以字数据num2 3. 下面的程序通过子程序调用,将数组ARRAY的COUNT个元素求和,并将结果送SUM单元,分析这段程序后,补充完整程序中的空格部分,并请画出用堆栈传送参数地址时,堆栈最满时的状态: SUM DW ? ARRAY DW 200 DUP(?) COUNT DW 200 ……… 第6页 MOV DX, OFFSET SUM PUSH BX MOV BX, OFFSET ARRAY PUSH BX MOV BX, OFFSET COUNT PUSH BX CALL SUMPRO ……… SUMPRO PROC NEAR PUSH AX PUSH BX PUSH SI PUSH DI PUSH BP MOV BP, SP MOV SI, [BP+_0AH] ;得到ARRAY的地址 MOV DI, [BP+_8] ;得到COUNT的地址 MOV CX, [DI] MOV DI, [BP+_6_] ;得到SUM的地址 XOR AX, AX NEXT: ADD AX, [SI] INC SI INC SI LOOP NEXT MOV [SUM_], AX ;送求和结果 POP BP__ POP DI POP SI POP BX__ POP AX RET SUMPRO ENDP 第7页 4.、设(SS)= 4000H,(SP)=1200H,执行下列指令序列,画图说明SP和堆栈内容变化过程的示意图,并在有分号的地方分别标出(AX),(SP) ,((SP))的内容。 MOV AX,23AAH PUSH AX ; (SP)= 11FEH ;((SP))= 23AAH MOV AX,6735H PUSH AX MOV BP,SP ADD WORD PTR[BP], 3000H POP AX ; AX= 6735H 画堆栈变化示意图: 六、综合题。 1. 编程实现:将从键盘上接收到的一串字符(字符个数≤60)以其相反的次序显示在屏幕上。 2. 编写程序将包含100个数据的数组ARRAY分成两个数组,正数组和负数组,ARRAYP,ARRAYN,并统计它们的长度。 3. 有一个首地址为A的N字数组,编制程序使该数组中的数按照从大到小的次序排列。
第四章 汇编语言程序设计(assembly language
programming)
§4.1 汇编语言(assembly language)
一.概述
汇编语言:一种符号语言,它用助记符表示指令的操作码和操作数,用标号或符号代表地址、常量和变量,与机器语言几乎一一对应
汇编语言程序:用汇编语言编写的程序
汇编:把汇编语言源程序翻译成机器语言目标程序的过程
汇编语言源程序 手工汇编或汇编程序 机器语言目标程序
汇编程序:用来完成汇编工作的程序,有
小汇编ASM
宏汇编MASM
动态调试程序DEBUG
二.汇编语言的语句
格式: [名称] 指令助记符 [操作数] [;注释]
带方括号的项有时可没有,注释项完全可以没有
每个部分用空格分开
每行最多可有132个字符,但最好不要超过屏宽80
语句可分成指令性语句和指示性语句(伪指令语句)
指令性语句汇编后可生成机器码
[标号:] 指令助记符 [操作数] [;注释]
指示性语句指示汇编程序处理一些工作
[名称] 伪指令(指示符) [操作数] [;注释]
1.名称(或称标识符)
给指令或存储单元地址起的名字,由字母、数字、字符组成
字母:A~Z ,a~z
数字:0~9
字符:可打印 + - * / = ( ) [ ] 〈 〉 ; . ' ’ ,_ : ?
@ $ &
(非打印 空格 制表符TAB 回车 换行)
(界符: , ; : .( )[ ]〈 〉+ - * / = ? _ @ & $
' ’ 界符用来表示某个标志的结束)
数字不能作名称的第一个字符,圆点 .仅能作第一个字符
保留字不能作标识符($、?是保留字,与其它字符组合除外)
名称最长为31个字符
当名称后跟冒号,表示该名称是其后指令的标号,代表该指令的开始地址,其他指令可以用该标号作为转移地址
当名称不跟冒号,它可能是标号或变量名,伪指令前的名称不跟冒号