好文档 - 专业文书写作范文服务资料分享网站

微机原理与接口技术(楼顺天第二版)第四章习题解答

天下 分享 时间: 加入收藏 我要投稿 点赞

微机原理与接口技术(楼顺天第二版)第四章习题解答

第4章汇编语言编程

4.1。众所周知,具有N个字符的ASCII码存储在BUF的开头。为此编写了一个汇编语言程序。这组

个字符串被转移到缓冲区BUFR,字符串的顺序与原始顺序相反。 a: BUF数据库\\

BUFR数据库100 DUP(?)

movcx,nlaisi,bufliadi,bufr adddi,cxdecdi L1:

mov,[si] mov [di],al incsi decdi循环l14.2,使用移位、转移和添加指令实现AX含量增加10倍

a:将扩展结果放在dx: ax中,注意10× ax = 8× ax+2× ax

xordx、dxshlax、1 cldx、1movbx、axmovcx、dxshlax、1 cldx、1shlalx、1 cldx、1addax、bxacdx、cx

4.3、3个16位无符号数连续存储在缓冲区VAR中,程序对它们进行编程,使它们按升序排列。如果存储在VAR中的数字是有符号的,那么写一个程序以降序排列它。答:VAR DW 1236,-432,3900 xorsi,si

movax,var [si] cmpax,var [si+2] jae1 xchgax,var [si+2] l1: cmpax。增值[+4]JAE L2 xchg AX,增值[SI+4] L2:

MOV增值[SI],增值MOV AX,增值[SI+2] CMP AX,增值[SI+4] JAE

L3

XCHG AX,增值[Si+4] L3: MOV增值[SI+2],AX

4.4。写入程序段以实现A1和BL中的每个位按顺序交叉,并且获得的16位字存储在DX中,例如,(A1)= 01100101 b,(BL) = 11010110b,并且获得(DX)= 1011011011011011001 b答:使用轮班指令完成 xordx,dxmovcx,8l1: shral,1 crdx,1shrbl,1 crdx,1loop l1 4.5,两个字节类型的正整数分别存储在变量VAR1和VAR2中,并编写了完整的汇编语言程序实现:

(1)当两个数中的一个为奇数时,奇数存储在VAR1中,偶数存储在var2中;

(2)当两个数都是奇数时,两个变量的内容不变;(3)当两个数为偶数时,将两个数减少一倍,然后存储在同一位置。

a:当VAR1为奇数时,这两个单元的内容将保持不变,不管VAR2的奇偶性如何;只有当VAR1是偶数时,如果VAR2是奇数,VAR1和VAR2交换内容;如果VAR2是一个偶数,这两个数字将减少一倍并存储在同一位置。数据段变量1 DB 28变量2 DB 36数据结束代码段

假设CS:CODE,DS:DATA,ES:DATA START:

MOV AX,DATA MOV DS,AX MOV ES,AX MOV AL,VAR1 MOV BL,VAR2 TEST AL,1 JZ even 1 JMP OVER

even 1:TEST BL,1 JZ EVEN2 MOV VAR1,BL MOV VAR2,AL JMP OVER EVEN2: SHR AL,1 MOV众所周知,在变量VAR1、VAR2和VAR3中存储了3个相同的代码,但是有一个错误代码。编写一个程序段,找出错误代码并将其发送到AX,同时将其地址发送到SI;如果所有3个代码都相同,请在AX中设置-1标志 a:在数据段中定义:

VAR1 dw5a 34 hvar 2 dw5a 35 hvar 3 dw3a 34h在代码段中写入程序段:

movax,-1 movabx,var1 cmpbx,VAR2 JZ L2 CMP BX,VAR3 JZ L1

MOV AX,BX LEA SI,VAR1 JMP OVER L1:

MOV AX,199 解决方案:程序段通过向左移位4位并以低位填充0(即除以16)来完成由DX:AX组成的32位无符号数4.8。阅读下面的程序段,指出它完成了什么操作CcmpAX,0jgeexit negAXexit: … a:取ax的绝对值

4.9,A:将DX中的值转换成相应的ASCII字符,并将其存储在对应于DISP的4字节存储单元中例如,DX=3F0BH,则“3”、“F”、“0”、“B”存储在DISP

4.10,a:将第一个和第二个数据相加,并将结果存储在FIRST中,FIRST中的结果是:10H, 61H,01H

4.11,a:将从端口390H读取的低4位数据转换成对应十六进制数的

ASCII码,然后输出到端口390H例如,当读取数据为29H时输出“9”,当读取数据为1BH时输出“b”。4.12。答:事实上,BX内容循环向右移动了2位。因此,BX寄存器的内容是C02DH4.13。答:完成BX内容的逻辑右移5位,所以BX寄存器的内容是03位(1)AX=FFF3H,DX = FFFAH;(2)AX=1FF2H,DX=0002H 4.15,a: AX=FFFCH,BX=200AH,CX=0008H,DX=2010H,SI=2000H 4.16,a:至少,缓冲器

leadi,buffertmovcx,n adddi,N ADD DI,N SUB DI,2 L1: MOV AX,[SI] MOV [DI],AX ADD SI,2 128,35,46,69,120,89,93,100,112,125,200数据结束 代码段

假设CS:代码,DS:数据开始:MOV AX,数据MOV DS,异或CX,CX

MOV CL,数组; 数据的数量存储在AX

MOV SI,偏移阵列+1;SI存储第一个数字的偏移量地址xordx,dx

xox ax;AX用于存储,首先清除xh: xorbx,bx

movbl,[si] addax,bxjncbuyichu adddx。1 BUYICHU:INC SI LOOP XH化学机械抛光DX,0 JZ OVER MOV DX,-1 OVER:hlt code ends start 4.19,a:程序如下:

movcx,nlaisi,bufmoax,[si] movdx,axaddsi,2l1:

cmpax。[国际公司] JBE国家石油天然气集团公司1 XCHG AX,[国

际公司]国家石油天然气集团公司1:

化学机械加工制造公司,[国际公司] JAE国家石油天然气集团公司2 XCHG DX,[国际公司]国家石油天然气集团公司2: ADD国际公司,2 环路L1

如果BUF存储有符号的数字,程序中只需修改两行:

JBE国家石油天然气集团公司1至:JLE国家石油天然气集团公司1 JAE国家石油天然气集团公司2至:JG国家石油天然气集团公司2 采用双指针方法:SI为读指针,DI为写指针,从低位地址开始,从内存中读取一个字节,如果不是0,则写入内存;如果为0,则不执行写操作

LEA SI,BUFFER XOR CX,CX MOV CL,[SI] INC SI MOV DI,SI XOR BH,BH XOR AL,AL L1: 化学机械抛光[SI),AL JZ L2

MOV BL,[SI] MOV [DI],BL INC DI INC BH L2: INC SI回路L1 MOV BUFFER,BH

|产品低阶字ADD DI,2

MOV [DI],DX;产品高阶字popax xordx,dxdivbx

movquota [si],ax;商MOV余数[西],DX;剩余部分加1,2环路

微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)第四章习题解答第4章汇编语言编程4.1。众所周知,具有N个字符的ASCII码存储在BUF的开头。为此编写了一个汇编语言程序。这组个字符串被转移到缓冲区BUFR,字符串的顺序与原始顺序相反。a:BUF数据库\\BUFR数据库100DUP(?)movcx,nlaisi,
推荐度:
点击下载文档文档为doc格式
3vqm62dat24uc568cqjj1x2cx44ea901a9g
领取福利

微信扫码领取福利

微信扫码分享