版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.2 指出下列指令是否有错,并说明理由。 (1)MOV DI,SI;两个内存单元之间不能直接传送数据;两个内存单元之间不能直接传送数据 (2)MOV CS,AX;CS段寄存器不能作为目的操作数段寄存器不能作为目的操作数 (3)MOV 1200,AX;立即数不能作为目的操作数;立即数不能作为目的操作数 (4)MOV DS, CS;段寄存器之间不能直接传送;段寄存器之间不能直接传送 (5)POP CS;CS不能作为弹栈指令的目标不能作为弹栈指令的目标 (6)MOV CL,AX;两个操作数的类型必须相同;两个操作数的类型必须相同 (7)MOV 5000H,1000H;两个内存单元之间不能直接传送数
2、据;两个内存单元之间不能直接传送数据 4.3 在8086中,堆栈操作是字字操作还是字节字节操作?已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSH AX);试问AX的内容存放在何处?答:是答:是字字操作;操作; AX的内容存放到的内容存放到10504H字单元字单元,即:,即: 12H(10505H);34H (10504H) 数据传送指令能够完成下列操作数的传送传送任务。立即数存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的寄存器不能作目的寄存器) 4.5 编程求AX累加器和BX寄存器中两个
3、无符号数之差的绝对值,结果放内存(2800H)单元中。解法二: SUB AX,BX JNC OK ADD AX,BX ; 原AX SUB BX,AX ; 反相减 MOV AX,BXOK:MOV 2800H,AX解法一: SUB AX,BX JNC OK NEG AXOK:MOV 2800H,AX4.6 若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放在2000H开始的内存单元中,试编制程序。 解法一:解法一: MOV BX , 3000H MOV DI , 2000H MOV AX , BX MOV DX , BX+2 ADD DI , AX
4、;低字相低字相加加 ADC DI+2 , DX解法二:解法二: MOV AX , 3000H MOV DX , 3002H ADD 2000H , AX ADC 2002H , DX解法三:解法三: MOV SI , 3000H MOV DI , 2000H MOV AX , DI MOV DX , DI+2 ADD AX , SI ADC DX , SI+2 MOV DI , AX MOV DI+2 , DX4.7 用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。 解:从88H端口读入信息(1)IN AL,88H (2) MOV DX,88H IN
5、 AL,DX解:从44H端口输出56H(1)MOV AL,56H OUT 44H,AL (2) MOV AL,56H MOV DX,44H OUT DX,AL4.19 指出以下四条指令的作用(指出以下四条指令的作用(HEX为数据段的一个变量名)为数据段的一个变量名) MOV BX,HEX ;取变量取变量 HEX的的内容内容BX LEA BX,HEX ;取变量取变量 HEX的的有效地址有效地址BX MOV BX,OFFSET HEX ;取变量取变量 HEX的的偏移量偏移量BX MOV BX,SEG HEX ;取变量取变量 HEX的的段地址段地址BX 4.20 下面是变量定义伪指令,下面是变量定义
6、伪指令, DATA SEGMENT BUF DW 3 DUP(5,2 DUP(8) CED DB Welcome to you,0DH,0AH,$ ADDR DW BUF COUNT EQU $-CED DATA ENDS问: 按内存单元存放的先后次序先后次序,按字节字节写出数据段中的数据 说明对BUF,CED,ADDR等变量施行TYPE, LENGTH,SIZE运算后,其结果分别为多少? COUNT的值为多少? 解: 按内存单元存放的按内存单元存放的先后次序先后次序,按,按字节字节写写出数据段中的数据:出数据段中的数据: 05H, 00H, 08H, 00H, 08H, 00H, 05H,
7、00H, 08H, 00H, 08H, 00H, 05H, 00H, 08H, 00H, 08H, 00H,57H, 65H, 6CH, 63H, 6FH, 6DH, 65H, 20H, 74H, 6FH, 20H, 79H, 6FH, 75H, 0DH, 0AH, 24H, 00H, 00H(2)(1)COUNT = $-CED = 19(3)4.22 编写一个将编写一个将16位二进制数转换成位二进制数转换成BCD码数的程序。码数的程序。 DATA SEGMENT ; 解法一解法一 HEX DW 9A48H BCD DB 5 DUP(?)DATA ENDSSTACK SEGMENT DB 2
8、56 DUP (?) TOP EQU $ - STACKSTACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP MOV BX,OFFSET BCD MOV AX,HEX MOV DX,0 MOV CX,10000 DIV CX ;DX:AXCXAX, ; 余数余数DX MOV BX+4,AL ;万位数;万位数( AH必为必为0 ) MOV AX,DX MOV DX,0 MOV CX,1000 DIV CX ;DX
9、:AXCXAX, ; 余数余数DX MOV BX+3,AL ; 千位数千位数 MOV AX,DX MOV CL,100 DIV CL ; AXCLAL ,余数余数AH MOV BX+2,AL ; 百位数百位数 MOV AL,AH MOV AH,0 MOV CL,10 DIV CL MOV BX+1,AL ; 十位数十位数 MOV BX,AH ; 个位数个位数 HLTCODE ENDS END STARTDATA SEGMENT ; 解法二解法二 HEX DW 9A48H BCD DB 5 DUP(?)DATA ENDSSTACK SEGMENT DB 256 DUP (?) TOP LABEL
10、 WORDSTACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV BX,OFFSET BCD MOV AX,HEX MOV SI, 10 MOV CX,5LP1:MOV DX,0 DIV SI ;DX:AXSIAX, 余数余数DX MOV BX,DL ;第一次保存的是个位数;第一次保存的是个位数 INC BX LOOP LP1 HLTCODE ENDS END START 4.23 编写一个
11、将编写一个将5位位BCD码数(小于码数(小于65536)转换成二)转换成二进制数的程序进制数的程序。 DATA SEGMENT BCD DB 7,4,3,0,5 ;BCD=50347 HEX DW 0DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX LEA BX,BCD MOV AL,BX+4 ;万位数万位数 MOV AH,0 MOV CX,10000 MUL CX ; AX*CXDX:AX,DX 必为必为0 ADD HEX,AX ;HEX+AX AX,CF必为必为0 MOV AL,BX+3 ;
12、 千位数千位数 MOV AH,0 MOV CX,1000 MUL CX ADD HEX,AX MOV AL,BX+2 ; 百位数百位数 MOV CL,100 MUL CL ; AL*CLAX ADD HEX,AX MOV AL,BX+1 ; 十位数十位数 MOV CL,10 MUL CL ADD HEX,AX MOV AL,BX ; 个位数个位数 ADD HEX,AX HLTCODE ENDS END START 4.25 编写一个带符号数四则运算的程序,完成(编写一个带符号数四则运算的程序,完成(Z-(X*Y+100))/1000的运算,商送的运算,商送V单元,余数送单元,余数送W单元。单元
13、。X,Y,Z均为带符号数,设:均为带符号数,设: X=FFF0H=-16,Y=0008H=8,Z=007F=127。 DATA SEGMENT X DW 0FFF0H Y DW 8 Z DW 7FH V DW ? W DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX MOV AX,X IMUL Y ;AX*YDX:AX ADD AX ,100 ADC DX,0 ;DX:AX与与32位字长的位字长的100相加相加 MOV CX,AX ;(X*Y+100) BX : CX MOV BX,DX
14、 MOV AX,Z CWD ;将;将AX(即:(即:Z)的符号位扩展到)的符号位扩展到DX SUB AX ,CX ;计算;计算 Z - (X*Y+100) SBB DX,BX MOV BX,1000 IDIV BX ;DX:AXSIAX,余数,余数DX MOV V,AX ;保存商;保存商 MOV W,DX ;保存余数;保存余数 HLTCODE ENDS END START 4.26 从从BUF单元开始有单元开始有10个带符号数:个带符号数:-1,3,248,90,42,9042,-4539,0,-28,792。试找出它们的最大值、最小值和平均值,并分别送。试找出它们的最大值、最小值和平均值,并
15、分别送MAX、MIN和和AVG单元。试编写完整的汇编语言程序单元。试编写完整的汇编语言程序 DATA SEGMENT BUF DW -1,3,248,90,42,9042,-4539,0,-28,792 MAX DW -32768 MIN DW 32767 AVG DW 0DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,10 MOV SI,0 MOV DI,0NEXT: MOV AX,BX ;取一个数;取一个数 CMP AX
16、,MAX ;是当前较大;是当前较大 JNG L1 ;的数吗?;的数吗? MOV MAX,AX L1: CMP AX,MIN ;是当前较小;是当前较小 JNL L2 ;的数吗?;的数吗? MOV MIN,AX L2: CWD ;将将AX符号扩展到符号扩展到DX ADD SI,AX ;求累加和;求累加和 ADC DI,DX ADD BX,2 ;指向下一个数;指向下一个数 LOOP NEXT MOV BX,10 ;计算平均值;计算平均值 MOV AX,SI MOV DX,DI IDIV BX MOV AVG,AX HLTCODE ENDS END START程序阅读题程序阅读题-例例1 : MOV
17、CL,4 MOV AX,2000H SHL AL,CL SHR AX,CL MOV 2000H,AX试问:(试问:(1)若执行前)若执行前(2000H) = 05H,(2001H) = 07H, 则执行后有:则执行后有:(2000H) = H (2)本程序的功能是:)本程序的功能是: 将将(2000H)、(2001H)单元中的非组合型单元中的非组合型BCD码压码压缩成组合型缩成组合型BCD码,并存放到码,并存放到(2000H)单元单元 75H例例2 2:子程序嵌套子程序嵌套(递归调用递归调用)程序设计程序设计-计算计算 n! 入口条件:入口条件:n已在已在AX中,且中,且0n8 出口条件:出口
18、条件:n!放在!放在AX中中FACTOR PROC PUSH AX SUB AX,1 ;n-1n JNZ COUNT POP AX JMP RETURNCOUNT: CALL FACTOR POP CX MUL CXRETURN: RET若执行前若执行前AX=8,则程序执行后有:,则程序执行后有: AX=40320例例3 3:某班有某班有7 个同学英语成绩低于个同学英语成绩低于80 分,分数存在分,分数存在ARRAY 数组中,数组中,试编程完成以下工作:试编程完成以下工作:(1)给每人加)给每人加 5 分,结果存到分,结果存到 NEW 数组中数组中(2)把总分存到)把总分存到SUM 单元中单元
19、中DATA SEGMENTARRAY DB ?,?,?,?,?,?,?,?,?,?,?,?,?NEW DB 7 DUP(?)SUM DW 0DATA ENDSCODE SEGMENTMOV AX,DATAMOV DS, AXLEA SI,ARRAYLEA DI,NEWMOV CX,7NEXT: MOV AL,SIADD AL, 5MOV DI, ALINC SIINC DILOOP NEXTCODE ENDSCODE SEGMENTLEA SI,ARRAYCLCMOV CX, 7NEXT1: MOV AL,SIMOV AH, 0ADC SUM, AXINC SILOOP NEXT1CODE ENDSY0ABCG2AG2BG1Y6Y7A13A1CE1#偶偶体体CE2#偶偶体体CE1#奇奇体体CE2#奇奇体体ABCG2AG2BG1Y6Y7Y0RDRDA13A1A13A1A13A1RDRDD7D0D15D8习题 3.8 参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贷款担保合同范例
- 劳务分包合同价格的影响因素分析
- 建筑分包合同款项结算风险管理
- 挂名股东之间的合作协议
- 松木方购销合同
- 爱心传递无偿服务合同的温暖力量
- 个人协作权益协议
- 司机担保协议合同格式模板
- 代理词处理房屋买卖纠纷
- 医用耗材严格品质控制
- LF炉的脱氧工艺
- 小学数学计算教学(共36张PPT)
- 2024届安徽省合肥市42中学数学八年级第二学期期末监测试题含解析
- 面销培训课件
- 基坑降水施工技术规范
- 《人身保险》课件
- 大学智能手环的项目计划书
- 2024年中国华电集团有限公司招聘笔试参考题库含答案解析
- 绩效管理外文翻译外文文献中英翻译-绩效管理外文文献
- 一年级家长会精编课件
- 牛养殖场标准化红牛养殖场建设项目施工图纸
评论
0/150
提交评论