复习ASM含部分答案.ppt_第1页
复习ASM含部分答案.ppt_第2页
复习ASM含部分答案.ppt_第3页
复习ASM含部分答案.ppt_第4页
复习ASM含部分答案.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计复习,1。二进制数,十进制数,十六进制数和BCD码数之间的转换方法。 例 :(129)10( )2( )16 (10010111)BCD( )10( )2 2 。 真值数和补码数之间的转换方法 例 :字长8位,则-6补( ) 16,若X补E8H,则X的真值为( ) 16 3。 n位字长的有符号数、无符号数的数值范围 设设机器数字长=n位,则n位补码数,其真值范围为 2n-1 +2n-11 无符号数其数值范围为 0 2n1 例 : 16位二进制数所能表示的无符号数范围是_。 4。补码计算及并对结果进行分析, 5. 熟记0-9、A-F、回车符、换行符的ASCII码。,第一章,综合题: 例1: 用补码运算19-96,并判断结果是否溢出(需给出C标和 O标)?,解: 19-96补= 19补+ -96补,19补= 00010011 -96补= 10100000,19-96补=10110011,根据X补补=X原: 19-96原=11001101B 所以19-96=-77 C标=0 ,O标=0。 因为O标=0,所以结果无溢出 正确,综合题: 例2: 用补码运算-66-99,并判断结果是否溢出(需给出C标和 O标)?,解: -66-99补= -66补+ -99补,-66补= 10111110 -99补= 10011101,66+99补= 01011011, 6699=+01011011=+91 C标=1 O标=1,因为O标=1,所以结果溢出错误,C P U,存储器,AB地址总线,DB数据总线,CB控制总线,二,一,存储器,I/O接口,I/O设备,例:微处理器与I/O接口及存储器进行信息传送是通过三总线来完成, 该三总线为 、 和地址总线。,第二章,1。微型机的硬件结构,2。存贮单元和存贮器地址 .存储器由若干“存储单元”组成,每一单元存放一个“字节”的信息。 .系统为每一单元编排一个地址,地址码为二进制数,习惯上写成16进制。 .存储器容量由地址线“宽度”决定。 例:1M容量的存储器 地址范围:00000HFFFFFH 由20根地址线提供地址码。,第三章,1。基本结构寄存器的名称、位长和作用。 (1)通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP (2)段寄存器:CS,SS,DS,ES,FS,GS (3)指针寄存器:EIP,ESP (4)标志寄存器:EFLAG 15位标志分为两类:状态标志和控制标志 6种状态标志:CF OF ZF PF AF SF 例:80486 CPU中的SP寄存器是一个 B 位的寄存器。 A. 8位 B. 16位 C. 24位 D. 32位,第三章,2。80486的工作模式:实地址模式和保护虚拟地址模式。 80486的三个存贮地址空间:逻辑空间、线性空间和物理空间。 在实模式下,486只能访问第一个1M内存(00000HFFFFFH) 逻辑空间=物理空间=1M(220) 在保护模式下,486可以访问4G(232)物理存储空间(0000,0000HFFFF,FFFFH) 逻辑空间(虚拟空间)可达246=64T,一.实模式的特点: 加电、复位之后,486自动工作在实模式,系统在DOS管理下 在实模式下,486只能访问第一个1M内存(00000HFFFFFH), 存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量为64K。 在实模式下,段寄存器中存放段基址。,第三章,3。实地址模式下,物理地址的形成 物理地址计算公式: 物理地址=段基址*16+偏移地址 在80486实地址模式下,设某存贮单元的段基址为FEFFH,偏移地址为1000H,则该存贮单元的物理地址为_FFFF0H_。,第四章、第五章,2、80486的寻址方式 486有3类7种寻址方式 立即寻址方式:获得立即数 寄存器寻址方式:获得寄存器操作数 存储器寻址方式:获得存储器操作数(内存操作数),1、源程序中的语句类型 一个完整的源程序应包含2类语句: 指令性语句(符号指令)、指示性语句(伪指令),内存寻址方式 16位寻址规定可使用的寄存器 (1) 直接寻址 (2)寄存器间接寻址 BX,BP,SI,DI 段寄存器:间址寄存器 某单元的物理地址=段寄存器内容16+间址寄存器 (3)基址寻址 BX+位移量,BP位移量 段寄存器:基址寄存器+位移量 物理地址=段寄存器内容16+基址寄存器+位移量 (4)变址寻址 SI+位移量,DI+位移量 (5)基址+变址寻址 BX+SI,BX+DI,BP+SI,BP+DI,例:指出下列指令源操作数的寻址方式: ADD AX,TABLE _直接_ MOV AX,BX+SI+6 _基址加变址_ MOV DX,BX _寄存器间接寻址_ MOV DX,BX _寄存器_ MOV AL,-1 _立即数_ 例:设BX=1200H,SI=0002H,DS=3000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203H)=90H。请写出下列各条指令单独执行后,有关寄存器及存储单元的内容。 1。DEC BYTE PTRSI+1200H 指令执行后 (31202H)=_0F6_H, 操作数的寻址方式为_变址_。 2。 MOV AX,WORD PTRBXSI指令执行后, AX=_90F7_H,源操作数的寻址方式为_变址加基址_。,3、常用伪指令 (1)数据字义伪指令 DB DW DD (2)等值伪指令 EQU = 例:某程序中的数据定义如下: DAT1 DW 1234H,5678H,AB,CD,2 DAT2 DB 4 DUP(?) DAT3 DD ? CN EQU $-DAT1 请问CN的值是 18 . DAT1+5字节单元的内容是_A_. 4、 常用运算符 $运算符 SEG运算符 OFFSET运算符 PTR运算符 例:数据段有: BUF DB 11,22,33,44 请修改下列指令(红色为修改后的内容) MOV AX,WORD PTR BUF INC BYTE PTR BX,源、目操作数不可同为内存操作数 源、目操作数属性一致(长度相同) 当目标操作数为间址、变址、基址、基+变址的内存操作数,而源操作数为单字节/双字节立即数,则目标操作数必须用PTR说明类型,若操作数为间、变、基、基+变的内存操作数,则必须用PTR说明类型,对于单操作数指令(如:I NC,DEC),对于双操作数指令(如:MOV,ADD,CMP),四,五,5 、80486基本指令集,若操作数为间、变、基、基+变的内存操作数,则必须用PTR说明类型,例:下列指令中,错误的指令条数为 3 。 INC BX MOV AL,DX MUL 100 MOV AX,DS:BP MOV BUF1,BUF2,第一类、 传送类,2. 堆栈操作指令 PUSH/POP,第二类、算术运算,1. 通用传送 MOV LEA,1.基本四则运算 ADD ADC SUB SBC MUL IMUL DIV IDIV INC DEC,2.BCD调整 DAA,数据进栈、出栈过程 进栈、出栈的操作数只能16或32位,第四类 逻辑运算,1.逻辑运算 NOT AND OR XOR 注意:NOT不影响标志,其余三条指令 仅影响S 、Z、P标志,而使C和O标志=0。,2.移位 SAL SAR SHL SHR RCL RCR ROL ROR 特别要注意各种移位指令如何影响进位标志C。,3.测试 TEST,第三类 转移和调用指令,1.无/有条件转移 JMP JC/JNC JZ/JNZ JS/JNS JP/JNP JO/JNO (无符号数比较)JA JNA JNC JC (有符号数比较)JG JGE JL JLE,2.子程序调用与返回 CALL/ RET,转移和调用指令是如何改变CS和IP的值 段内调用与返回 /段间调用与返回压入和弹出堆栈的字节数各是多少字节?,移位指令的移位次数只能是立即数或CL寄存器,第五类 串操作指令 (REP) MOVSB(W/D) LODSB(W/D) (REP) STOSB(W/D) (REPE)/(REPNE) CMPSB(W/D) (REPE)/(REPNE) SCASB(W/D),第六类 处理机控制指令 CLD/STD,执行指令前应做那些准备工作? 串比较指令、串搜索指令执行后Z标志的含义。,例: 设SS2000H,SP2000H,AX3000H,BX4000H,执行 PUSH AX PUSH BX MOV BX,SP POP AX 之后,SS= 2000H ,SP= 1FFEH ,AX= 3000H ,BX= 1FFCH 。 例: 设BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么? MOV CX,10 LEA BX,BUF K2: MOV AL,BX CMP AL,z JNE K1 SUB AL,20H MOV BX,AL K1: INC BX LOOP K2 答:将BUF开始的小写字母z转换成大写字母Z。,例 :设数据段有: DAT1 DB ABCD LL1 EQU $-DAT1 DAT2 DW AB,CD LL2 EQU $-DAT1 LL3 EQU $-DAT2 (1) 汇编后: LL1的值是 4 , LL2的值是 8 ,LL3的值是 _4_。 (2)执行如下程序段后,AX中的内容是 4443 H,BX中的内容是 4344H。 代码段: 对DS初始化 MOV AX,WORD PTR DAT1+2 MOV BX, DAT2+2,第六章 1。EXE文件和COM文件的编程格式的区别。 2。汇编语言从源程序的建立到运行可执行程序的主要步骤。 3。DOS功能调用(INT21H):01H,02H,09H,0AH BIOS键盘功能调用(INT16H): 00H,01H, 屏幕功能调用 (INT10H):00H,0EH 4。 宏指令与子程序的定义和调用格式 两者之间的区别与联系。,程序设计题,1.,程序清单 . 486 DATA SEGMENT USE16 BUF DB 23H,45H DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET BUF MOV CX, 2 ;显示的字节个数 L1: MOV BL, SI CALL N2_16 ;调用转换子程序 INC SI LOOP L1 MOV AH, 4CH INT 21H,1.将BUF单元内的字节数据转换二位16进制数并显示输出,;二进数十六进数ACSII码 N2_16 PROC MOV DL, BL ;暂存 ROL DL, 4 AND DL, 0FH;截取高4位 CMP DL,10 JC NEXT ADD DL,7 NEXT: ADD DL,30H MOV AH, 2 INT 21H ;显示高4位16进制数 AND BL, 0FH;截取低4位 CMP BL, 10 JC NEXT1 ADD BL, 7 NEXT1: ADD BL, 30H MOV DL, BL INT 21H ;显示低4位16进制数 RET N2_16 ENDP CODE ENDS END BEG,程序设计题,2通行字识别 程序执行后,给出简单明了的操作提示 PASSWORD:,请用户键入“通行字”,按回车表示通行字键入结束。只有当用户键入的字符串和程序内定的字符串相同时,程序才能返回DOS,否则请用户重新键入“通行字”。,.486 data segment use16 mesg db “PASSWORD:“,$ pass db ABCDE len equ $-pass buf db 10,?,10 dup(?) data ends code segment use16 assume cs:code,ds:d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论