微机原理与接**术答案。
注:以下程序均经过上机验证过,可完美实现。。。
祝大家好运。。。
1. 已知在buf的起始处保存有n个字符的ascii码,编写汇编语言程序实现,将这组字符串传送到缓冲区bufr中,并且使字符串的顺序与原来的顺序相反。
解:buf db 'chen_xiaobo'
bufr db 100 dup(?)
mov cx, 11
lea si, buf
lea di, bufr
add di,cx
dec di
l1:mov al,[si]
mov [di],al
inc si
dec di
loop l1
4 编写程序段实现将al和bl中的每一位依次交叉,得到的16位字保存在dx中,例如(al)=01100101b,(bl)=11011010b,则得到的(dx)=10110110 10011001b。
解:(al)=0101 0011b=53h (bl)=01100101b=65h
dx)=001 11001 0010 0111b=39 27 h
mov al, 53h
mov bl, 65h
xor dx,dx
mov cx,8
l1:shr al,1
rcr dx,1
shr bl,1
rcr dx,1
loop l1
7 分析下列程序段的功能:
mov cl,04
shl dx,cl
mov bl,ah
shl ax,cl
shr bl,cl
or dl,bl
解:程序段完成dx:ax组成的32位无符号数左移4位,低位补零。
如 (ax)=0011 1001 0010 0111b=3927h (dx)=0101 0011 0110 0101b=5365h
运行前 dx:ax组成5365 3927h,运行后 dx:ax组成3653 9270h
mov ax, 3927h
mov dx, 5365h ;自己添加的程序。
mov cl,04
shl dx,cl
mov bl,ah
shl ax,cl
shr bl,cl
or dl,bl
8 下列程序段执行后,求bx寄存器的内容:
mov cl,3
mov bx,0b7h
rol bx,1
ror bx,cl
解:bx内容循环右移2位,(bx)=c02dh。
9 下列程序段执行后,求bx寄存器的内容:
mov cl,5
mov bx,7d5ch
shr bx,cl
解:bx内容逻辑右移5位,(bx)=03eah。
10 将buffers中n个字按相反顺序传递到buffert中。
解:buffers dw 'x','i','b','o'
buffert dw 100 dup(?)
lea si,buffers
lea di,buffert
mov cx,4
add di,8
sub di,2
l1:mov ax,[si]
mov [di],ax
add si,2
sub di,2
loop l1
11 数组array中存放有一组字型数据,前两个字节存放数据长度(5的倍数)。为给这个数组中的数据进行加密保护,每5个数据取出一个数据进行加密处理:奇数位进行取反,偶数位不变,例如对数据0110 1100 1011 0001b加密后变成1100 0110 0001 1011b,编写加密程序encrpytion 和解密程序 unencrpytion 。
解:约定从第一个数据开始,每5个数据为一组,每组中的第一个数据采取加密/解密处理。由于加密算法采用的是取反操作,解密算法也采用取反操作,因此解密和解密算法是同一个程序。
注:当 0110 1100 1011 0001b=6cb1h,加密后变成 c61bh
0001 0001 0001 0001b=1111h 加密后为 bbbbh
stack segment stack 'stack'
dw 100h dup(0)
top label word
stack ends
data segment
appay dw 000ah,6cb1h,5678h,4321h,3456h,3412h,1111h,9321h,4332h,6645h,8543h
data ends
code segment
assume cs:code, ds:data, es:data, ss:stack
start:
mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
lea sp,top
call encrpytion
encrpytion proc near
lea si,appay
xor dx,dx
mov ax,[si]
mov bx,5
div bx
mov cx, ax
add si, 2
l1:mov ax, [si]
xor ax,0aaaah
mov [si], ax
add si,10
loop l1
ret encrpytion endp
13. 设buf中存放有n个无符号数(或有符号数),编程实现求它们的最小值(存入ax)和最大值(存入dx)。
解:data ends
code segment
assume cs:code, ds:data, es:data, ss:stack
start:
mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
lea sp,top
mov cx,5
lea si,buf
mov ax,[si]
mov dx,ax
add si,2
l1:cmp ax,[si]
jbe nochg1 ;小于等于的时候转移,有符号数为jle
xchg ax,[si]
nochg1:
cmp dx,[si]
jae nochg2 ;大于的时候转移,有符号数位jge
xchg dx,[si]
nochg2:
add si,2
loop l1
code ends
end start
16. 编写一个子程序实现统计al中1的个数,然后检测出字节型缓冲区buf中0和1个数相等的元素个数。
解:stack segment stack 'stack'
dw 100h dup(0)
top label word
stack ends
data segment
buf db 11110000b,10101111b,01010101b,10101011b,11100011b
data ends
code segment
assume cs:code, ds:data, es:data, ss:stack
start:
mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
lea sp,top
mov cx,5;buf中的个数保存在bh里面。
lea si, buf
xor bh,bh
l1: mov al,[si]
call countbyte
cmp bl,4 ;bl为1的个数,不为4调转。为4,si加1
jnz l2
inc bh
l2: inc si
loop l1
;al中1的个数结果保存在bl里面。
countbyte proc near
push ax
push cx
mov cx,8
xor bl,bl
cou1:shr al,1
adc bl,0
loop cou1
pop cx
pop ax
retcountbyte endp
huidos: mov ah,4ch
int 21h
code ends
end start
19. 在缓冲区buffer中,第1个字节存放数组的长度(<256),从第2个字节开始存放字符的ascii码,编写子程序完成在最高位给字符加上偶校验。
解:stack segment stack 'stack'
dw 100h dup(?)
top label byte
stack ends
data segment
buffer db 3首字节为字符串长度。
db 'abc字符串。
data ends
code segment
assume cs:code,ds:data,es:data,ss:stack
start:
mov ax,stack
mov ss,ax
lea sp,top
微机原理答案
1.串行通信与并行通信的主要区别是什么?各有优缺点?答 按信息的传送方式可将数据通信分为并行通信与串行通信两种 并行通信 是指利用多条数据传输线将一个数据的各位同时进行传送。特点 传输速度快,适用于短距离通信。串行通信 是指利用一条传输线将数据的各位一位位地顺序进行传送。串行通信又可分为异步通信和同...
微机原理答案
第3章 8086 8088指令系统与寻址方式习题。3 3 8086系统中,设ds 1000h,es 2000h,ss 1200h,bx 0300h,si 0200h,bp 0100h,var的偏移量为0600h,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。1...
微机原理A答案
安徽大学20 11 20 12 学年第 2 学期。微机原理及应用 a卷 考试试题参 及评分标准。一 单项选择题 每小题2分,共20分 1 a2 b 3 a4 c 5 c6 b 7 d8 c 9 c10 b 二 填空题 每空1分,共20分 10000011 ch,e896h,cf 1,of 0,zf ...