1、李伯成微型计算机原理与接口技术课后习题答案李伯成微机原理习题 第三章本章作业参考书目:1.周明德: 微型计算机IBM-PC系统原理与应用 清华大学出版社19912.王永山等: 微型计算机原理与应用 西安电子科大出版社 19983.张怀莲:IBMPC汇编语言程序设计 电子工业出版社 1990注:本习题解中的程序仅为代码片段,可在Emu8086 version 2.57环境下仿真运行,如果在MASM下进行汇编,需添加段设置以及相应的伪指令。3.1 MOV AX,00H; 立即寻址SUB AX,AX; 寄存器寻址MOV AX,BX; 寄存器间接寻址MOV AX,TABLE; 直接寻址MOV AL,A
2、RAY1SI; 寄存器相对寻址 MOV AX,BX+6; 寄存器相对寻址3.2 若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。 程序片段如下: ORG 100h MOV CX,03FFH;数据个数 LEA SI,TABLE;源区首地址 LEA DI,NEXT; 目的区首地址AGAIN: MOV AL,SI; MOV DI,AL; 搬移 INC SI INC DI; 移动地址指针 DEC CX; 循环计数器递减 JNZ AGAIN; 循环未结束转 HLT; 暂停 TABLE DB 1024 dup (A); 源数据区 NEXT DB 1024 dup (0); 目的数据
3、区3.3 编写10个字(16位二进制数)之和的程序ORG 100h LEA SI,ADD1; LEA DI,ADD2; LEA BX,SUM; MOV CL,CONT; MOV CH,0; 循环初始化 CLC; 进位清零 MADD1: MOV AX,SI; 读加数1 ADC AX,DI ADD SI,2; 移动源区地址指针 ADD DI,2; 移动目的区地址指针 MOV BX,AX; 回存计算结果 ADD BX,2; 移动“和”存储区地址指针 LOOP MADD1; 循环控制 HLT; 暂停ADD1 DB 0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1
4、ADD2 DB 56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H; 加数2SUM DB 10DUP (0);和存储单元CONT DB 5 ;循环次数3.4 某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS和REMAIN中。 ORG 100h MOV BL,2; 除数初值 AGAIN: MOV CX,NUM; 预计最大循环次数 MOV AL,BL; 0、1的平方根除外 MUL BL; 得到2的平方 CMP AX,CX; 大于原始数据么? JG EXIT; 若原始数据小于4转EXIT MOV AX,CX; 读数 DIV BL
5、; 试除 INC BL; 除数递增 JMP AGAIN; 继续除 EXIT: DEC BL; 去除除数自加 MOV ANS,BL; 存商 MOV AL,BL; 恢复余数 MUL BL; SUB CX,AX; MOV REMAIN,CL; HLT NUM DW 7; ANS DB ?; REMAIN DB ?; 3.5 在DATA1之下顺序存放着以ASCII码表示的千位数,将其转换成二进制数。MOV CL,4; 移位次数 MOV CH,CL; 循环次数 MOV SI,OFFSET ASCBIN CLD XOR AX,AX XOR DX,DXASCB1: LODSB AND AL,7FH CMP
6、AL,0 ;不大于0结束转换 JL ERR CMP AL,9 JG ASCB2 ;大于9转ASCB2 SUB AL,30H ; 数字形式二进制数减30H JMP ASCB3ASCB2: CMP AL,A ;大于9又小于A结束转换 JL ERR CMP AL,F JG ERR ;大于F为不合理数,结束转换 SUB AL,37H ;字符形式ASCII数减37HASCB3: OR DL,AL ROL DX,CL DEC CH JNZ ASCB1 ROL DX,CL MOV BIN,DX;存储转换结果ERR: NOP HLT ASCBIN DB 1,B,4,3BIN DW ?3.7 编写程序将MOLT
7、中的一个8位数乘以20,乘积放在ANS中(用3种方式)。解:第一种方法:常规乘法运算 ORG 100h MOV AL,MOLT MOV BL,20 MUL BL MOV ANS,AX HLT MOLT DB 2 ANS DW ?第二种方法,将MOLT连加20次ORG 100h MOV CX,20 MOV BX,MOLT XOR AX,AX CLC ADD1:ADC AX,BX LOOP ADD1 MOV ANS,AX HLT MOLT DW 5 ANS DW ?第三种方法,将“20”连加MOLT次ORG 100h MOV CX,MOLT MOV BX,20 XOR AX,AX CLC ADD1
8、:ADC AX,BX LOOP ADD1 MOV ANS,AX HLT MOLT DW 5 ANS DW ?3.8 在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。ORG 100h XOR DL,DL LEA DI,KVFF; NEXT0: LEA SI,BUFFER; MOV CL,99; 比较次数为N-1次 NEXT1: MOV AL,SI; INC SI; CMP DL,AL; JNC NEXT2; MOV DL,AL; DL中始终存目前最大值NEXT2: DEC CL; JNZ NEXT1; MOV DI,DL; 最大值存储 HLT BUFFER DB
9、;自行定义100个数据 KVFF DB ?3.9若将数据按大小顺序排序,试编写程序.解:此处采用 “冒泡法”予以处理: ORG 100h LEA DI,BUFFER; 数据区 MOV BL,99; 外循环次数 NEXT0: MOV SI,DI; MOV CL,BL; 内循环次数 NEXT3: MOV AL,SI; 读数 INC SI; 移动指针 CMP AL,SI; 比较 JNC NEXT5; 大于转NEXT5 MOV DL,SI; MOV SI-1,DL; MOV SI,AL; 不大于互换 NEXT5: DEC CL; 内循环次数减一 JNZ NEXT3; DEC BL; 外循环次数减一 J
10、NZ NEXT0 HLT BUFFER DB 自行定义100个字节型数据3.10 在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中.A20,Y=3*A;A=60,Y=80. ORG 100h MOV AL,BVFF CMP AL,20 JL EX1 CMP AL,60 JL EX2 MOV AL,80 JMP STOP EX1: MOV BL,3 MUL BL JMP STOP EX2: SUB AL,20 STOP: MOV DES,AL HLT BVFF DB8 DES DB ? 3.11址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:统计=90分、8089分、7079分、6069分、60分以下的人数,结果存放在BTRX开始的5个单元中求平均成绩,结果存放在LEVEL中。解:寄存器使用分配:90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在DI。 ORG 100h XOR AH,AH XOR DX,DX ;统计结
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1