版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、编写8086汇编语言程序,将寄存器AX的高8位传送到寄存器BL,低8位传送到寄存器DL。答:CODE SEGMENTASSUME CS:CODESTART:MOV BL,AHMOV DL,ALMOV AX,4C00HINT 21HCODE ENDSEND START2、将寄存器DX的内容按从低位到高位的顺序分成4组,并将各组数分别送到寄存器AL,BL,CL和DL中。(例如:(DX)=0ABCDH,分成四组(DL)=0AH,(CL)=0BH,(BL)=0CH,(AL)=0DH)答:CODE SEGMENTASSUME CS:CODESTART:MOV AX,DXAND AL,0FH ;处理好
2、最低位组MOV BL,DLMOV CL,4SHR BL,CL ;处理好次低位组AND AH,0FH ;暂存次高位组MOV CL,4SHR DH,CL ;处理好最高位组MOV CL,AHMOV AH,4CHINT 21HCODE ENDSEND START3、判断MEM单元的数据,编程将奇数存入MEMA单元,将偶数存入MEMB单元。答:DATASEGMENTMEMDW?MEMADW?MEMBDW?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASRART:MOVAX,DATAMOVDS,AXMOVAX,MEM ;取数SHR AX,1 ;移出D0位JCPO_1 ;
3、是奇数,则转移MOVMEMB,AX ;存偶数JMP DONEPO_1: RCLAX,1 ;恢复AX内容DONE: MOVAX,4C00HINT21HCODEENDSENDSTART4、试统计9个数中偶数的个数,并将结果在屏幕上显示。答:DATA SEGMENTBUFF DB 3BH,47H,8DH,-75,0A4H,69,-2EH,0CCH,200DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUFF ;设数据地址指针MOV CX,9 ;数据长度XOR DL,DL ;设统计寄
4、存器DL清零A1: TEST BYTE PTR SI,1 ;判断奇偶JNZ NEXT ;奇数不统计INC DL ;统计偶数NEXT:INC SI ;移动指针LOOP A1 ;循环判断,直到所有数据处理完ADD DL,30H ;将统计结果转换为ASCII码MOV AH,2 ;调用DOS功能显示结果INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START5、试将一串16位无符号数加密,加密方法是每个数乘以2。(不考虑进位)答:(1)DATA SEGMENTMEM DW 20 DUP (?) ;定义20个随机数DATA ENDSCODE SEGMENTASSUME C
5、S:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,LENGTH MEM ;数据长度LEA BX,MEM ;数据地址指针AA1: MOV AX,BX ;取数ADD AX,AX或MUL AX,2或SHL AX,1或SAL AX,1;2加密MOV BX,AX ;保存加密后数据ADD BX,2 ;移动地址指针LOOP AA1 ;循环执行MOV AX,4C00HINT 21HCODE ENDSEND START以上参考答案没考虑数据2产生的进位。(2)DATA SEGMENTMEM DW 20 DUP (?) ;定义20个随机数MEM1 DW 40 DUP(?
6、) ;考虑加密有进位,结果区留80字节DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,LENGTH MEM ;数据长度LEA SI,MEM ;数据地址指针LEA DI,MEM1 ;结果区指针AA1: MOV AX,SI ;取数MOV BX,2 ;2加密MUL BX ;AXBXMOV DI,AX ;保存加密后数据低16位MOV DI+2,DX ;保存加密后数据高16位ADD SI,2 ;移动原数据地址指针ADD DI,4 ;移动加密数据地址指针LOOP AA1 ;循环执行MOV AX,4C00
7、HINT 21HCODE ENDSENDS START6、根据寄存器DL的D3位,完成两个压缩BCD数X和Y的加/减运算,D3=0,做加法;D3=1,做减法,并将结果存入寄存器DI。答:DATA SEGMENTX DB 84HY DB 98HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR AX,AX ;设置进/借位保存寄存器AHMOV AL,X ;取第一个BCD数AND DL,08 ;判断D3位JNZ ADD1 ;D3=1,做加法SUB AL,Y ;否则做减法ADC AH,0 ;保存借位JMP G
8、UADD1: ADD AL,Y ;完成加法ADC AH,0 ;保存进位GU: MOV DI,AXMOV AX,4C00HINT 21HCODE ENDSENDS START7、统计BLOCK1和BLOCK2两个单元数据中,对应位不同的有多少位?答:DATA SEGMENTBLOCK1 DW ?BLOCK2 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,16 ;用DW定义,故有16次循环XOR DL,DL ;设统计计数器LOP: XOR AX,AX ;设数据暂存器XOR BX,BXS
9、HL WORD PTR BLOCK1,1 ;将第1个数据的最高位移至CFRCR AX,1 ;将CF移到AX的D15位SHR WORD PTR BLOCK2,1 ;将第2个数据的最高位移至CFRCR BX,1 ;将CF移到BX的D15位CMP AX,BX ;两数的最高位不同吗JE NEXT ;相同,转移INC DL ;统计不同位NEXT: LOOP LOPMOV AL,DL ;将统计结果调整为十进制数AAMMOV BX,AXADD BX,3030H ;将十进制数结果转换成ASCII码MOV AH,2MOV DL,BH ;显示结果的十位数INT 21HMOV DL,BL ;显示结果的个位数MOV
10、AH,2INT 21HMOV AX,4C00HINT 21HCODE ENDSENDS START8、完成10个压缩BCD数相加,并将结果显示出来。答:(1)10个两位压缩BCD数相加。DATA SEGMENTTABL DB 1,2,3,20H ;定义10个2位BCD数COUNT EQU $-TABLSUM DW ? ;加法结果区DISP DB 4 DUP(?),0DH,0AH,$;显示结果缓存区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,0MOV BX,OFFSET TABL ;设数据
11、区指针MOV CX,COUNTLOP: ADD AL,BXDAAJNC LL ;BCD加法调整,若无进位转移PUSH AX ;保存加法中间结果MOV AL,AH ;处理进位ADD AL,1DAAMOV DL,AL ;进位保存在DL中POP AXMOV AH,DL ;AX中有加法中间结果LL: INC BXDEC CXJNZ LOP ;循环执行加法、调整、处理进位等MOV SUN,AX ;保存最终结果MOV DX,AX ;结果显示处理MOV CL,4AND AX,0F0FH ;将结果分为非压缩BCD码AND DX,0F0F0HSHR DX,CLLEA BX,DISP ;指向显示结果缓存区ADD
12、DH,30H ;将结果转换成ASCII码,存入显示区MOV BX,DHADD AH,30HINC BXMOV BX,AHADD DL,30HINC BXMOV BX,DLADD AL,30HINC BXMOV BX,ALLEA DX,DISP ;调用DOS功能显示MOV AH,9INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START(2)10个四位压缩BCD数相加。DATA SEGMENTSBUFF DW 1234H,5678H,9321H, ;定义10个4位BCD数DBUFF DW ?,? ;加法结果区COUNT EQU (DBUFF-SBUFF)/2 ;数
13、据长度DATA ENDSCODE SEGMENTASSUME CS:CODE,DA:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,SBUFF ;数据区地址指针LEA DI,DBUFF ;结果区地址指针XOR DL,DL ;保存加法进位寄存器MOV AX,0 ;第1次与0加LOP1: MOV BX,SI ;取4位的BCD数ADD AL,BL ;先做低2位加DAA ;调整MOV DI,AL ;存低2位临时结果MOV AL,AH ;做高2位加ADC AL,BHDAAMOV DI+1,AL ;存高2位临时结果MOV AL,DL ;统计进位ADC AL,0DAA ;调整进位为
14、十进制数MOV DA,AL ;保存进位待下次加法用MOV AX,DI ;取临时结果备下次加法用LOOP LOP1 ;循环执行加法、调整ADD DI,2MOV DI,DLMOV AX,4C00HINT 21HCODE ENDSEND START说明:4位BCD加法不能一次进行,须先对低2位BCD数相加、调整、考虑进位等,再对高2位BCD数进行同样操作。因为BCD数运算结果需要调整,而调整指令只对寄存器AL,故在程序中要将中间结果保存到DI指示的内存单元。考虑进位也要是BCD数,故将DL中暂存的结果转到寄存器AL进行调整。9、编写程序,将一串凌乱的字母按从小到大的顺序排列。答:DATA SEGME
15、NTZZ DB EDKLOMGAXT ;仅考虑大写字母COUNT EQU $-ZZDB 0DH,0AH,$ ;设回车、换行以便显示DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV CX,COUNTMOV DI,CXLOP: MOV DX,1 ;设置排列成功标志DEC DI ;两两比较,长度先减1JZ DONE ;排好,则结束MOV CX,DIMOV SI,0 ;用变址寻址L1: MOV AL,ZZSICMP AL,ZZSI+1 ;前后两个字母比较JBE A1 ;前一个字母小于或等于后一个,转移XCH
16、G AL,ZZSI ;反之,则交换位置MOV ZZSI,ALMOV DX,0 ;有交换(还没排好),标志为0A1: INC SI ;进行下次排序LOOP L1 ;所有字母排序一次CMP DX,0 ;排序成功否?JE LOP ;否,开始下一轮排序DONE: MOV DX,OFFSET ZZ ;将排好序的字串显示MOV AH,9INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START10、试编程统计寄存器AX中,相邻位的变化次数。答:(1)将AX移1位,利用XOR指令,再统计“1”的个数。CODE SEGMENTASSUME CS:CODESTART:XOR DX,DX ;统计计数器清零MOV CX,16MOV BX,AXROL BX,1 ;将数据循环左移,D15移到D0XOR AX,BX ;判别相邻位,不同则XOR结果为1AA1: SHL AX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广西南宁市隆安县城厢镇招聘党建联络员1人考试备考题库及答案解析
- 2026年常州信息职业技术学院单招职业技能考试题库及答案解析
- 2026福建宁德市福鼎市中小学幼儿园新任教师招聘83人考试参考题库及答案解析
- 2026进贤县消防救援大队招聘3人考试备考试题及答案解析
- 2026年安徽中医药高等专科学校单招综合素质考试题库附答案解析
- 2026广东警官学院财务部招聘合同制人员1人考试备考试题及答案解析
- 语文大试卷及答案亮点
- 2026年四川机电职业技术学院单招职业适应性测试题库及答案详解(夺冠)
- 2026年四川化工职业技术学院单招职业技能测试题库含答案详解(新)
- 2026年四川交通职业技术学院单招职业适应性考试题库带答案详解(夺分金卷)
- 自来水厂设备介绍
- 银行金融知识讲座课件
- 新河北省安全生产条例培训课件
- 《城市轨道交通供电系统继电保护与二次回路》课件 单元四 微机保护与自动装置
- 译林版(2024)八年级上册英语全册单词默写打印版(含答案)
- 建筑工人安全培训考试试题与答案
- 消防管道供货合同范本
- 食品区域保护合同范本
- 基于Unity3D的虚拟苏州园林漫游系统设计与实现
- 湖南省长沙市实验小学小学数学五年级下册期末试卷(培优篇)
- 人教版(2024)四年级全一册信息科技全册教案
评论
0/150
提交评论