欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    复习ppt课件.ppt

    • 资源ID:3129937       资源大小:1.47MB        全文页数:153页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    复习ppt课件.ppt

    汇编语言程序设计 Assembly Language Programming,复习,第1章 汇编语言基础,知识点1,1、掌握2进制数,10进制数及16进制数之间的转换。掌握16进制数的加减运算.,注意:若一个16进制数最高位数码是AF,为了与变量名区分,需要在该数的最前面加一个 “0”。,知识点2,2、n位无符号数、n位补码的表示范围?,1.5 如果用24b储存一个无符号数,这个数的范围是什么? 如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?,0224-1,-223+223-1,1.11 把二进制代码1001011101011000分别看作: (1)二进制无符号数 (2)二进制补码 (3)压缩BCD码 (4)非压缩BCD码 哪一种情况下它代表的“值”最大?哪一种情况下它代表的值最小?,=(9758)16 =(38744)10,=(-686A)16 =(-26792)10,=(9758)10,=(78)10,知识点3,3、零扩展与符号扩展 (1)将AL寄存器中的8位无符号数扩展为16位数的指令: MOV AH, 0 或者 MOVZX AX, AL (2)将AL寄存器中的8位有符号数扩展为16位数的指令: CBW 或者 MOVSX AX, AL,知识点4,4、已知一个数的补码,如何求该数本身? 例: X补=01011011 X补= 11011011,正数:各位上的二进制数码乘以其权所得乘积之和. 01011011B=5BH=5*16+11=91,负数:先求该数对应的相反数的补码,即把该负数补码的所有位“取反加1”(“求补”)得到对应正数补码. 根据正数的补码求出正数本身值. 最后加上负号即可。 X补= 11011011,则-X补=11011011求补=00100100+1=00100101, 于是-X=37,所以X=-37,知识点5,5、哪个标志位表示无符号数运算结果的特征?哪个标志位表示有符号数运算结果的特征?如何判断?,计算机内用进位标志CF表示两个无符号数运算结果的特征。CF=1表示它们的加法有“进位”,或者它们的减法有“借位”;CF=0则表示没有产生进位或借位。,“溢出标志OF”表示有符号数运算特征. OF= 1表示运算结果超过了表示范围, 称为“溢出”;OF=0没有产生溢出。,知识点6,6、内存储器容量由什么决定? 地址总线的位数 8086CPU有20位地址线,则内存储器容量为1MB = 220B.,知识点7,7、给定一个内存地址,如何读出/写入该地址内的字节数据/字数据/双字数据?,字数据: (00010H)=203EH,双字数据: (00010H)=5A2F203EH,字节数据: (00010H)=3EH,从00010H单元分别读取1个字节数据、1个字数据和1个双字数据.,若当前存储器内容如下所示, 将1个字数据1E22H写入00012H单元。,知识点8,8、什么是逻辑地址?什么是物理地址?掌握如何通过逻辑地址计算物理地址。,1.14:若8086某存储单元物理地址为12345H,则与它对应的逻辑地址中,偏移地址及段地址的最大值和最小值分别为多少? 偏移地址最小值:0005H 段地址最大值:1234H 偏移地址最大值:FFF5H 段地址最小值:0235H,1.15: 8086中最多可以有多少个不同的段地址? 65536个,1、一个16个字的数据区, 其起始地址为1234H:1000H.计算该数据区首、末字单元的物理地址。,首字单元地址1234H×16D+1000H=13340H,末字单元地址13340H+(16-1)×2=13340H+1EH =1335EH,2、如果一个程序开始执行之前,(CS)=1234H, (IP)=5678H,则该程序段的第一个字的物理地址是多少?,1234H×16D+5678H=179B8H,知识点9,9、掌握8086CPU的寄存器的用途。 哪些寄存器可存放偏移地址?哪些寄存器可存放段地址? 汇编源程序指令中不能出现哪些寄存器名? 掌握标志寄存器中的各个状态标志位的含义。,AX,AL 在乘除法指令中作累加器 在I/O指令中作数据寄存器 AH 在LAHF/SAHF指令中作目的/源寄存器 AL 在BCD、ASCII码数据运算时作累加器 在XLAT指令中作变址寄存器 BX 间接寻址时作地址寄存器 基址寻址、基址变址寻址时作基址寄存器 在XLAT指令中作基址寄存器 CX 循环、数据串指令中作循环次数寄存器 CL 移位、循环移位指令中的移位次数寄存器 DX I/O指令存放端口号 在乘除法指令中存放32位数据的高16位,堆栈指针寄存器SP (stack pointer)存放栈顶偏移地址。 基址指针寄存器BP (base pointer)存放堆栈段中数据的偏移地址。 源变址寄存器SI (source index)存放源数据区的偏移地址,用于寻址串指令的源数据串。 目的变址寄存器DI (destination index)存放目的数据区的偏移地址,用于寻址串指令的目的数据串,地址寄存器,CS (code segment)代码段寄存器 DS (data segment)数据段寄存器 SS (stack segment)堆栈段寄存器 ES (extra segment)附加段寄存器 16位寄存器,存放相应段的段地址,段寄存器,IP (instruction pointer)指令指针寄存器,存放代码段中的偏移地址。在程序运行时,总是指向下一条指令的偏移地址,与CS一起确定下一条指令的物理地址。 FLAGS标志寄存器,记录指令操作后结果的状态信息或控制处理器的标志。,专用寄存器,8086/8088CPU寄存器中可以存放段地址的有_. 8086/8088CPU寄存器中可以存放偏移地址的有_. 在程序运行时, 下一条将要执行的指令的地址存放在_段寄存器与_寄存器中. 指令中不能出现的寄存器是_.,CS, DS, SS, ES,BX, SI, DI, SP, BP, IP,CS,IP,IP, FLAGS,-100-120 -100补=1001 1100 120补= 0111 1000 0010 0100 CF=0 OF=1 SF=0 ZF=0 PF=1,若加法有进位或减法有借位,CF=1,否则CF=0.,若两同号数相加得异号数;或异号数相减后结果与减数符号相同,则OF=1,否则OF=0.,运算结果为负数则SF=1,否则SF=0.,运算结果=0则ZF=1,否则ZF=0.,运算结果低8位有偶数个1则PF=1,奇数个1则PF=0.,第2章 数据定义与传送,掌握的伪指令,段定义伪指令 数据定义伪指令DB、DW、DD ASSUME伪指令 END伪指令 处理器选择伪指令 ORG伪指令,掌握的指令,掌握的指令,特别注意指令格式: MOV LEA LDS, LES MOVZX, MOVSX, CBW,CWD, XCHG XLAT PUSH, POP,知识点1,1、掌握定义变量的方法 伪指令DB、DW、DD、DQ、DT的作用?通过上述伪指令定义后的变量具有哪些属性? 当定义的数据是常数、表达式、变量/标号名、字符串、?或者$时,内存中相应的存放内容是什么? 复制操作符DUP的作用 伪指令ORG的作用。,习题2.1某数据段内有如下数据定义: X DB 30, 30H, ABC, 2-3, ?, 11001010B DW 0FFH,-2, “CD” Y DD 20 dup(15, 3 dup(?), 0) Z DB 3 dup(?) W DW Z-X 假设变量X的偏移地址为20H。 写出变量X各数据在内存中 的具体位置和相关内存单元的值。 写出变量Y,Z的偏移地址。 写出变量W的值,Y的偏移地址002EH Z的偏移地址01BEH W的值 019EH,30H,41H,1EH X,42H,43H,0FFH,00H,0CAH,知识点2,2、掌握指令操作数 汇编指令可以有哪几种操作数?分别以何种形式出现在指令中? 如何判断指令中的操作数是立即数、寄存器数、还是存储器数? 对于存储器操作数,如何求出该存储器操作数在内存中的物理地址?即如何取得该存储器操作数。,注意1:8086/8088CPU中,IP/FLAGS不能作为操作数出现在指令中。 如指令:MOV FLAGS, 1234H 错误,注意2:8086/8088CPU中,用来间接寻址的寄存器有:BX、BP、SI、DI。,习题2.5现有(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,说明下列指令执行后AX寄存器的内容。 MOV AX, 1200H MOV AX, BX MOV AX, 1200H MOV AX, BX MOV AX, 1100HBX MOV AX, BXSI MOV AX, 1100HBXSI,(AX)=1200H,(AX)=(BX)=0100H,(AX)=(21200H)=4C2AH,(AX)=(20100H)=3412H,(AX)=(21200H)=4C2AH,(AX)=(20102H)=7856H,(AX)=(21202H)=65B7H,知识点3,4、MOV指令 MOV指令会影响标志位吗? MOV指令执行后源操作数和目的操作数的内容发生变化吗? SRC和DEST必须有相同类型吗?如何改变或指定操作数类型呢? DEST可以是立即数或CS寄存器吗? 可以直接在两个存储器数之间传送吗?可以直接在两个段寄存器之间传送吗?可以将立即数直接传送给段寄存器吗?,习题2.4判断下列指令是否正确,指出错误原因. MOV AX, EBX 正确 MOV SI, DL错误, 两个操作数类型不匹配 MOV EBP, ESPEAX*3错误,比例因子不能为3 LEA AX, 3006H错误,源操作数应为内存操作数 MOV BPDI, 0错误,操作数类型无法确定 MOV SI, DI 错误,同时出现两个内存操作数 MOV ES, 1000H错误,立即数不能直接送段寄存器 MOV AX, X+2若X用EQU定义的符号或用DW定义的内存变量, 指令正确, 否则错误 MOV AX, CX+2 错误,不可计算的“常数表达式” MOV EAXEAX*2正确,习题2. 8 指出下列指令的错误。 MOV Y, X 同时出现了两个存储器操作数 MOV BL, 04B8H 操作数类型不匹配 MOV AL, Z 操作数类型不匹配 MOV BX, 3 操作数类型不能确定 MOV BX, DI 两个操作数不能都是存储器数 MOV DS, DATA 立即数直接送段寄存器 MOV NUM, AX 立即数不能用作目的操作数 MOV ES, DS 不能在段寄存器之间直接传输 MOV AX,FLAGS 指令中不能出现FLAGS MOV CS,AX CS寄存器不能用作目的操作数,知识点4,4、LEA指令 若X是变量名,则指令LEA BX, X与哪条指令等价? LEA指令的源操作数可以是立即数或寄存器数吗? LEA指令的目的操作数可以是立即数、存储器数吗?可以是8位寄存器吗? LEA指令影响标志位吗?,MOV BX, OFFSET X,注意:LEA指令的源操作数是存储器数,而目的操作数是16位寄存器。 LEA AX, 201EH LEA 3105H, SI LEA BL, X,5、其他传送指令 LDS、LES的功能分别是什么?指令格式是什么?影响标志位吗? CBW/CWD指令是对无符号数进行扩展呢还是对有符号数进行扩展?那么如何对无符号数进行扩展呢? MOVZX/MOVSX指令的功能和格式是什么?在汇编源程序中使用该指令时需要加入哪条伪指令? XCHG指令会改变源操作数和目的操作数内容吗?操作数可以是立即数吗?源操作数和目的操作数类型要求相同吗?源操作数和目的操作数可以同时为存储器数吗? XLAT指令有什么应用?,知识点5,实验报告1: 3、编写程序:数据段中有一字节变量X,X的值为0H0FH(即一位16进制数码),利用换码XLAT指令将X所代表的一位16进制数码转换为它所对应的16进制数字字符的ASCII码值。 DATA SEGMENT X DB 0BH HEX DB “0123456789ABCDEF“ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX LEA BX, HEX MOV AL, X XLAT MOV X, AL MOV AX, 4C00H INT 21H CODE ENDS END START,6、堆栈 如何定义堆栈段?堆栈段的用途及结构特点?如何取得堆栈段的栈顶物理地址? 进栈/出栈操作对堆栈如何影响?进栈/出栈的数据可以是字节数据吗? PUSH指令格式?影响标志位吗? POP指令的操作数可以是立即数、CS寄存器吗?影响标志位吗? 如何使用PUSHF和POPF指令访问标志寄存器内容?,知识点6,分析下列指令正确与否。 PUSH AX PUSH CS PUSH BX PUSH X PUSH AL PUSH 1234H,操作数为16位寄存器,正确,操作数为16位段寄存器,正确,错误,存储器操作数类型不明确,应修改为: PUSH WORD PTRBX,若X是DW定义的变量,则正确,错误! 堆栈操作必须以字(或双字)为单位,不允许字节堆栈,8086CPU不允许立即数操作数.80386允许.,分析下列指令正确与否。 POP DS POP CS POP BX POP X POP AL POP 32FAH,操作数为16位段寄存器,正确,POP指令操作数不能是CS,错误,错误,存储器操作数类型不明确,应修改为: POP WORD PTRBX,若X是DW定义的变量,则正确,错误! 堆栈操作必须以字(或双字)为单位,不允许字节堆栈,POP指令的操作数不允许为立即数.,1、已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。请画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。,(1)执行指令前,(2)执行第一条PUSH指令后,(3)执行第二条PUSH指令后,(4)执行POP指令后,知识点7,7、掌握操作数表达式 EQU伪指令与 =伪指令的区别是什么? 指令中的立即数、寄存器操作数和存储器操作数都可以用表达式代替吗? 哪些操作符可以用于立即数表达式?哪些操作符可以用于存储器操作数表达式? 指令MOV BL, X+5,当X是变量时指令的含义是什么?当X是用EQU定义的常量时,指令含义又是什么? 运算符SEG、OFFSET、TYPE、LENGTH和SIZE的作用分别是什么?,有如下数据段定义, 完成下列要求: DATA SEGMENT L1 DB 30 DUP(?) L2 DB 1,7,8,3,2 DATA ENDS (1)将L1的偏移地址送BX. (2)用一条指令把L2的头两个字节内容送SI. (3)用EQU定义符号L的值等于L1的实际长度.,MOV BX, OFFSET L1或 LEA BX, L1,MOV SI, WORD PTR L2,L EQU L2-L1,(1)若有定义: DATA SEGMENT X DB 12,22,32,42,52,62,72 DATA ENDS 则指令MOV BL, X+5被汇编为? (2)若有定义: X EQU 12 则指令MOV BL, X+5被汇编为?,汇编为: MOV BL, 62,汇编为: MOV BL, 17,注意: (1)中定义的X是变量. 指令中的X+5是存储器操作数.,注意: (2)中定义的X是符号常数. 指令中的X+5是立即数操作数.,如数据段定义如下, 分析下列指令. DATA SEGMENT ARRAY DW 100 DUP (?) TABLE DB ABCD DATA ENDS ADD SI, TYPE ARRAY ADD SI, TYPE TABLE MOV CX,LENGTH ARRAY MOV CX,LENGTH TABLE MOV CX,SIZE ARRAY MOV CX,SIZE TABLE,TYPE 变量/标号 功能:回送变量/标号的类型,ADD SI,2,ADD SI,1,MOV CX,100,MOV CX,1,MOV CX,200,MOV CX,1,LENGTH 变量 功能:回送由DUP定义的变量的单元数,其它情况回送1,SIZE 变量 功能:回送变量/标号的LENGTH*TYPE的值,第3章 数据运算与输入/输出,掌握的指令,ADD,ADC,INC,SUB,SBB,DEC,NEG,MUL,IMUL,DIV,IDIV LOOP AND, OR, XOR, NOT SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR CLC, STC, CMC, CLD, STD, CLI, STI,知识点1,1、算术运算指令 掌握加法与减法运算对标志位的影响。 如何求两个8位无符号数的加法(考虑结果可能超出8位)? 如何求两个8位有符号数的加法(考虑结果可能超出8位)? 如何求存放在(DX,AX)中双字数据的相反数? 如何实现(AX) ÷(BX)?如何实现(AX)÷5 ? 掌握应用算术指令编写实现表达式计算的汇编源程序。,1、A,B,C均为8位无符号数, 求其和送16位变量SUM中,要求考虑结果超过255的情况.,; (假设A,B,C的值分别为30H,55H,0A5H) MOV AL, A ; (AL)=30H ADD AL, B ;(AL)=30H+55H=85H, CF=0 ADD AL, C ;(AL)=85H+0A5H=2AH, CF=1,MOV AH, 0 ;(AH)=0,ADC AH, 0 ;(AH)=(AH)+0+CF=0,ADC AH, 0 ;(AH)=(AH)+0+CF=1,MOV SUM, AX ;2AHDS:SUM,01HDS:SUM+1,2、P,Q,R均为8位有符号数,求其和送TOTAL.要求考虑结果超过-128127的情况,MOV AL, P ;P(AL) CBW ;P符号扩展为16位(AX) MOV DX, AX ;P(DX) MOV AL, Q ;Q(AL) CBW ;Q符号扩展为16位(AX) ADD DX, AX ;P+Q(DX) MOV AL, R ;R(AL) CBW ;R符号扩展为16位(AX) ADD DX, AX ;P+Q+R(DX) MOV TOTAL, DX ;保存三个数的和,习题3.1 根据要求写出对应的汇编语言指令.,(1)把BX和DX寄存器内容相加,结果存入DX寄存器。,ADD DX, BX,(2)使用BX和SI寄存器进行基址变址寻址,把存储器中一字节内容与AL内容相加,结果存入存储单元。,ADD BXSI, AL,(3)使用BX寄存器进行间接寻址,把存储器中一个字内容与立即数3相加,结果存入该存储单元的指令 。 (4)用偏移地址1020H直接寻址,把存储单元一个字内容与立即数3相加,结果存入存储单元。 (5)将AL寄存器内容与立即数120相加,结果存入AL寄存器。,ADD WORD PTR BX, 3,ADD WORD PTR1020H, 3,ADD AL, 120,习题3.4 (3) Z(W*X)/(Y+6), R余数 MOV AX, W IMUL X MOV BX, Y ADD BX, 9 IDIV BX MOV Z, AX MOV R, DX,习题3.5一个双字长有符号数存放在DX(高位)AX(低位)中,写出求该数相反数的指令序列。结果仍存入DX,AX寄存器。 NOT AX NOT DX ADD AX, 1 ADC DX, 0,或者: NEG DX NEG AX SBB DX, 0,习题3.7 已知内存变量X, Y, Z均由“DB”伪操作定义,按照以下要求,使用MOVZX或MOVSX指令进行位数扩展,求三个数的16b和。 (1)如果X,Y,Z为无符号数 (2)如果X,Y,Z为有符号数 (1) MOVZX AX, X MOVZX BX, Y ADD AX, BX MOVZX BX, Z ADD AX, BX (2) MOVSX AX, X MOVSX BX, Y ADD AX, BX MOVSX BX, Z ADD AX, BX,方法:两个N位操作数相除,应首先把被除数扩展为2N位;并区分是无符号数还是带符号数的除法。 (1)均为无符号数 MOV DX, 0 ;(AX)零扩展(DX,AX) DIV BX (2)均为带符号数 CWD ;(AX)符号扩展(DX,AX) IDIV BX,编写指令实现除法(AX) ÷(BX).,设(AX)中为无符号数, 实现(AX)÷5 。,MOV BX, 5 MOV DX, 0 DIV BX,知识点2,2、掌握用LOOP指令实现数据累加及数组处理的程序。,实验报告2: 1、下列程序实现利用公式N2=1+3+5+(2N-1)来计算N2的值(N=23)。其中存在3个错误,请修改程序正确。 第1行 DATA SEGMENT 第2行 N DW 23 第3行 SQUARE DW ? 第4行 DATA ENDS 第5行 CODE SEGMENT 第6行 ASSUME CODE:CS, DATA:DS 第7行 START: MOV AX, DATA 第8行 MOV DS, AX 第9行 MOV CX, 2*N-1 第10行 MOV AX, 0 第11行 MOV BX, 1 第12行 ONE: ADD AX, BX 第13行 ADD BX, 1 第14行 LOOP ONE 第15行 MOV SQUARE, AX 第16行 MOV AX, 4C00H 第17行 INT 21H 第18行 CODE ENDS 第19行 END START,答: 错误1:第6行 修改为:ASSUME CS:CODE, DS: DATA。 错误2:第9行 修改为: MOV CX, N 错误3:第13行 修改为:ADD BX, 2,实验报告2: 4、数组ARRAY中存有10个无符号字整数(元素序号09)现在要删除其中的第5个元素。编写程序,把第69个元素移到第58个元素的位置上,并把第9个元素清零。 DATA SEGEMNT ARRAY DW 1, 9, 21, 2, 7, -9, 5, -7, -23, 6 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX,MOV BX, 10 MOV CX, 4 AGAIN: MOV AX, ARRAYBX+2 MOV ARRAYBX, AX ADD BX, 2 LOOP AGAIN MOV ARRAYBX, 0 MOV AX, 4C00H INT 21H CODE ENDS END START,知识点3,3、逻辑运算指令 掌握通过逻辑指令实现将一个数的某些位清零、置1、变反。 掌握如何进行数字字符与相应十进制数之间的转换? 掌握将AX寄存器的内容清零的多种方法。,编写指令将AL的第0、1两位清零。,1 0 1 0 0 0 0 0,AND AL, 0FCH,(AL)= 1 0 1 0 0 0 1 1,AND 1 1 1 1 1 1 0 0,编写指令将数字字符的ASCII码转化成对应的十进制数. 如(AL)=7=37H, 转换为(AL)=7.,AND AL, 0FH 或者 SUB AL, 30H,编写指令将AL的第5位置为1。,OR AL, 20H,1 0 1 0 0 0 1 1,(AL)= 1 0 0 0 0 0 1 1,OR 0 0 1 0 0 0 0 0,编写指令将一位十进制数转换成对应数字字符的ASCII码值. 如(AL)=7, 转换为(AL)=7.,OR AL, 30H 或者 ADD AL, 30H,编写指令使AL的0、1位变反。,XOR AL, 3,1 0 1 0 0 1 1 0,(AL)= 1 0 1 0 0 1 0 1,XOR 0 0 0 0 0 0 1 1,方法1: MOV AX, 0 方法2:SUB AX, AX 方法3:XOR AX, AX 方法4:AND AX, 0,编写指令将累加器AX内容清0。,习题3.16 设(BX)=0E3H,变量VALUE中存放内容为79H,指出下列指令单独执行后的结果. (1)XOR BX, VALUE (2)AND BX, VALUE (3)OR BX, VALUE (4)XOR BX, 0FFH (5)AND BX, BX (6)AND BX, 0,(BX)=009AH,(BX)=0061H,(BX)=00FBH,(BX)=001CH,(BX)=00E3H,(BX)=0000H,知识点4,4、移位指令 掌握如何用移位指令实现有符号数/无符号数的乘2/除2操作。 掌握如何实现将(DX,AX)中双字数据右移4位(或左移4位)。 掌握DOS的1号、2号、9号、0AH号、4CH号功能调用。,(1)实现将AX中的无符号数乘以2: SHL AX,1 (2)实现将AX中的无符号数除以2: SHR AX,1 (3)实现将AX中的有符号数乘以2: SAL AX,1 (4)实现将AX中的有符号数除以2: SAR AX,1,3.22 一个双字长数据存放在DX(高位)和AX(低位)中,写出指令序列实现:将该数据逻辑左移4位,结果仍存入DX、AX寄存器 。 MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL,3.23 已知(DX)=0B9H, (CL)=3, (CF)=1. (1) SHR DX, 1,0000 0000 1011 1001 (CF)=1 0000 0000 0101 1100 (CF)=1 (DX)=005CH,(2) SAR DX, CL,0000 0000 1011 1001 (CF)=1 0000 0000 0001 0111 (CF)=0 (DX)=0017H,3.23 已知(DX)=0B9H, (CL)=3, (CF)=1. (3) SHL DX, CL,(CF)=1 0000 0000 1011 1001 (CF)=0 0000 0101 1100 1000 (DX)=05C8H,(4) SHL DL, 1,(CF)=1 1011 1001 (CF)=1 0111 0010 (DL)=72H (DX)=0072H,3.23 已知(DX)=0B9H, (CL)=3, (CF)=1. (5) ROR DX, CL,0000 0000 1011 1001 (CF)=1 0010 0000 0001 0111 (CF)=0 (DX)=2017H,(6) ROL DX, CL,(CF)=1 0000 0000 1011 1001 (CF)=0 0000 0101 1100 1000 (DX)=05C8H,3.23 已知(DX)=0B9H, (CL)=3, (CF)=1. (7) SAL DH, 1,(CF)=1 0000 0000 (CF)=0 0010 0000 (DH)=00H (DX)=00B9H,(8) RCL DX, CL,1 0000 0000 1011 1001 0 0000 0101 1100 1100 (DX)=05CCH,3.23 已知(DX)=0B9H, (CL)=3, (CF)=1. (9) RCR DL, 1,1011 1001 1 1101 1100 1 (DL)=DCH (DX)=00DCH,3.24下面程序段执行完成后,BX寄存器的内容是什么? MOV CL, 3 MOV BX, 0B7H ROL BX, 1 ROR BX, CL,(BX)=0C02DH,;(BX)=0000 0000 1011 0111,;(CL)=3,;(BX)=0000 0001 0110 1110,;(BX)=1100 0000 0010 1101,知识点5,4、掌握DOS的1号、2号、9号、0AH号、4CH号功能调用。,实验报告2 2、从键盘上输入一行明文,然后按照密码加密规则0A,1B,2C将其翻译成密文,并把密文显示输出。,DATA SEGMENT BUFFER DB 81, ?, 81 DUP(?) DATA ENDS,CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX,LEA DX, BUFFER MOV AH, 0AH INT 21H,输入一串字符到BUFFER中的指令序列,MOV CL, BUFFER+1 MOV CH, 0 LEA BX, BUFFER+2 NEXT: MOV AL, BX ADD AL, A-0 MOV BX, AL INC BX LOOP NEXT,MOV BYTE PTRBX, $,LEA DX, BUFFER+2 MOV AH, 9 INT 21H,MOV AX, 4C00H INT 21H CODE ENDS END START,第4章 选择与循环,掌握的指令,JMP CMP TEST JG, JGE, JL, JLE, JE, JNE JA, JAE, JB, JBE, JE, JNE JC, JNC, JZ, JNZ, JS, JNS, JO, JNO, JP, JNP JCXZ, JECXZ LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ,知识点1,1、JMP指令 掌握JMP指令的5种格式。 实现向近程标号ONE的转移的方法。 实现向远程标号TWO的转移的方法。,若在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为27H,则转向的有效地址的值是多少? 0624H+2+27H=064DH,JMP ONE ;段内直接转移 LEA DX, ONE ;(DX)=标号ONE的偏移地址 JMP DX ;寄存器段内间接转移 T DW ONE ;变量T中存放标号ONE的偏址 JMP T ;存储器段内间接转移 T DW ONE ;变量T中存放标号ONE偏址 LEA BX, T ;BX指向存储单元T JMP WORD PTRBX ;存储器段内间接转移,实现转向近程标号ONE的4种方法。,JMP FAR PTR TWO ;段间直接转移 T DD TWO ;变量T中存放TWO的偏址和段址 JMP T ;存储器段间间接转移 T DD TWO LEA BX, T ;BX指向变量T JMP DWORD PTRBX;存储器段间间接转移,实现转向远程标号TWO的3种方法。,习题4.3 指令“JMP DI”和“JMP WORD PTR DI”作用有什么不同?请说明。,(1)都是近程间接无条件转移指令. (2)JMP DI指令转向的目标地址在DI寄存器内. (3)JMP WORD PTR DI指令转向的目标地址在存储单元中,该存储单元的地址在DS: DI中。,知识点2,2、CMP与TEST指令 CMP指令与SUB指令的区别? CMP指令如何影响标志位? 根据哪些标志位的设置来确定两个无符号数或两个有符号数的大小? TEST指令与AND指令的区别? TEST指令如何影响标志位? 如何判断正数与负数? 如何判断一个数的奇偶性?,知识点3,3、条件转移指令 JG, JGE, JL, JLE, JE, JNE JA, JAE, JB, JBE, JE, JNE JC, JNC, JZ, JNZ, JS, JNS, JO, JNO, JP, JNP JCXZ, JECXZ 两个无符号数/有符号数之间大小比较有几种可能结果?分别用哪条指令实现比较结果的条件转移?,设AX中是有符号数 (1)若要实现当AX 0时转至NEXT处: CMP AX, 0 JLE NEXT (2) 若要实现当AX0时转至NEXT处: CMP AX, 0 JGE NEXT,设AX中是有无符号数 (1)若要实现当AX 10时转至NEXT处: CMP AX, 10 JBE NEXT (2) 若要实现当AX10时转至NEXT处: CMP AX, 10 JAE NEXT,4、选择结构程序 掌握单分支和双分支结构程序的编写.,知识点4,4.8 假设X和X+2字单元存放有双精度数P,Y和Y+2字单元存放有双精度数Q, 下面程序完成了什么工作? MOV DX, X+2 MOV AX, X ADD AX, X ADC DX, X+2 CMP DX, Y+2 JL L2 JG L1 CMP AX, Y JBE L2 L1: MOV Z, 1 JMP SHORT EXIT L2: MOV Z, 2 EXIT: ,双精度数P(DX,AX),求2*P(DX,AX),比较2*P的高字部分与Q的高字部分,若大于则跳转到L2,若小于则跳转到L1,若2*P的高字部分=Q的高字部分,则比较2*P的低字部分与Q的低字部分,若低于或等于则跳转到L2,若2PQ,则Z=1; 若2PQ,则Z=2.,1、分析下列程序段 ADD AX, BX JNO L1 JNC L2 SUB AX, BX JNC L3 JNO L4 JMP SHORT L5 若(AX)=147BH, (BX)=80DCH,则程序转向 若(AX)=42C8H, (BX)=608DH,则程序转向 若(AX)=D023H, (BX)=9FD0H,则程序转向,(1)若(AX)=147BH, (BX)=80DCH ADD AX, BX JNO L1 JNC L2 SUB AX, BX JNC L3 JNO L4 JMP SHORT L5,(AX)=9557H SF=1, CF=0, ZF=0, OF=0,条件满足,转移到L1,不再执行后面的指令.,(2)若(AX)=42C8H, (BX)=608DH ADD AX, BX JNO L1 JNC L2 SUB AX, BX JNC L3 JNO

    注意事项

    本文(复习ppt课件.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开