1.解:自定义字数组如下。
block dw
1) mov bx,14
mov ax,block[bx]
2) mov bx,offset blcok
mov ax,[bx+14]
3) mov bx,offset blcok
mov si,14
mov ax,[bx][si]
2.解:假设变量名为dat,指针为0ff20h:8020h
指针在内存中的存放如下图。
ds:simov ax,1a00h
mov ds,ax
mov si,4000h
mov dx,[si]
add si,2
mov dx,[si]
3.解:2字节指令jmp short obj存储如下图。
所以当前的ip为0800h
jmp short obj为段内直接短转移指令,ip←ip+d8,转移范围不能超过-128—+127
转向地址=位移量+ip
1)obj=80h+0800h=0880h
2)obj=0ah+0800h=080ah
3)obj=6bh+0800h=086bh
4.解:可以先写如下程序段。
mov ax,8000h
mov bx,0f79h
push ax
push bx
pop cx
下图为执行完程序第四行处堆栈区示意图(栈顶地址为00ffh:009fh)
ss:sp下图为执行完程序第五行处堆栈区示意图(栈顶地址为00ffh:009fh)
ss:sp而cx=0f79h
5.解:data segment
dat1 dw 2
x dd ?
y dd ?
z dd ?
w dd ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,word ptr z
mul dat1
mov cx,dx
mov bx,ax
mov ax,word ptr z+2
mul dat1
add ax,bx
adc dx,cx
add ax,word ptr y
adc dx,word ptr y+2
add ax,word ptr x
adc dx,word ptr x+2
mov word ptr w,ax
mov word ptr w+2,dx
mov ax,4c00h
int 21h
code ends
end start
6.解:data segment
dat1 dw 2
x dw 1/?
y dw 1000h/?
z dw 1000h/?
v dw 1000h/?
dat dw ?
dat2 dw ?
dat3 dw ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,x
mov bx,y
imul bx
mov bx,ax
mov cx,dx
mov ax,v
cwdsub dx,cx
sbb ax,bx
mov dat,ax
mov cx,dx
mov ax,z
mov bx,2
imul bx
add ax,dat
adc dx,cx
sub ax,100h
sbb dx,0
idiv x
mov dat2,ax; 数据存放在变量中便于观测。
mov dat3,dx
mov ax,4c00h
int 21h
code ends
end start
7.解:data segment
x dw ?
y dw ?
result dw ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
cmp x,100
ja t0jmp ti
t0:mov ax,x
sub ax,y
jmp quit
t1:mov ax,y
sub ax,x
quit:mov result ax
mov ax,4c00h
int 21h
code ends
end start
8.解:n=10,数据存放在变量中便于观测。
data segment
array db 0h,12h,0f5h,01h,06h,99h,12h,0f5h,00h,00h
zero db ?
fs dw ?
zs dw ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov bx,0
mov di,0
mov si,offset array
again:mov al,[si]
inc si
cmp si,10
ja quit
cmp al,0
je t0 ;数据为0
test al,80h
je t1 ;数据为正数。
jmp t2 ;数据为负数。
t0:inc zero
jmp again
t1:inc bx
jmp again
t2:inc di
jmp again
quit:mov zs,bx
mov fs,di
mov ax,4c00h
int 21h
code ends
end start
9.解:参看教材77页。
10.解:密码字可以理解为是相应字符的ascii码。
data segment
bufin db 20h,20h dup (?
buffer db 10 dup (?
mimazi db 43h,47h,48h,46h,59h,44h,5ah,58h,56h,57h
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea dx,bufin
mov ah,0ah
int 21h
lea di,buffer
lea si,bufin
add si,2
mov cl,10
again:mov al,[si]
and al,0fh
mov bx,offset mimazi
xlatmov [di],al
inc si
inc di
loop again
mov ax,4c00h
int 21h
code ends
end start
11.解:假设dx寄存器低字节有数据。
提示:若dx寄存器中的高低字节都有数据,用同样的办法做。
data segment
clr db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,00f5h
mov ax,dx
mov ch,16
div ch
mov bl,ah
cmp al,9
ja chuli
add al,30h
jmp shuchu
chuli:add al,37h
shuchu:mov dl,al
mov ah,2
int 21h
mov al,bl
cmp al,9
ja chuli1
add al,30h
jmp shuchu1
chuli1:add al,37h
shuchu1:mov dl,al
mov ah,2
int 21h
mov ax,4c00h
int 21h
code ends
end start
12.解:此答案作为参考。
...将buf中的10个数据中的0抹掉并更新长度。
...buf中的第一个元素为缓冲区长度。
data segment
buf db 0ah,1,0,3,0,2,5,8,9,0,7
count db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea si,buf
mov bl,[si]
xor bh,bh
mov count,0
inc si
again:mov al,[si]
cmp al,0
jz chuli
inc si
cmp si,10
ja quit
jmp again
chuli:inc count
push si
push bx
sub bx,si
mov cl,bl
l:mov ah,[si+1]
mov [si],ah
inc si
loop l
pop bx
pop si
jmp again
quit:sub bl,count
mov si,0
mov buf[si],bl
mov ah,4ch
int 21h
code ends
end start
13.解:参看实验指导书或教材。
14.解:思路为11题的逆过程。
data segment
bufin db 20h,20 dup(?)
clr db 0dh,0ah,'$
dat db ?,
cs1 dw 4096
微机原理答案
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 ...