1. 试分析下列程序段:
add ax,bx
jnc l2
sub ax,bx
jnc l3
jmp short l5
l2:… l3:…
l5:… 如果ax、bx的内容给定如下:
axbx(1)14c6h80dch
(2)b568h54b7h
问该程序在上述情况下执行后,程序转向何处?
解:1)转向l2
因为(ax)+(bx)没有进位。
2)转向l5
因为(ax)+(bx)= 0a1fh,有进位。然后(ax)-(bx)有进位。
2. 编写程序,使用三种以上的方法,将存储器中ds:2000h开始的地址单元中的节数据复制到es:3000h开始的存储器地址单元中。
解:data segment
org 2000h
d1 db 100 dup(?)
data ends
extra segment
org 3000h
d2 db 100 dup(0)
extra ends
code segment
assume cs:code,ds:data,es:extra
start: mov ax, data
mov ds, ax
mov ax, extra
mov es, ax
lea si, d1
lea di, es:d2
mov cx, 100
l1: mov al, [si]
mov es:[di], al
inc si
inc di
loop l1
rep movsb
hlt1)利用通用传送指令mov
mov si,2000h
mov di,3000h
mov cx,100
aa: mov al,[si]
mov [di],al
inc si
inc di
loop aa
hlt2)利用交换指令xchg
mov si,2000h
mov di,3000h
mov cx,100
aa: mov al,[si]
xchg [di],al
inc si
inc di
loop aa
hlt3)利用换码指令xlat
mov bx,2000h
mov di,3000h
mov cx,100
aa: xor al,al
xlat mov [di], al
inc bx
inc di
loop aa
hlt4)利用堆栈实现数据传送。
mov si,2000h
mov di,3000h
mov cx,50
aa: push [si]
pop [di]
inc si
inc si
inc di
inc di
loop aa
hlt5)利用串操作指令rep movsb
mov si,2000h
mov di,3000h
mov cx,100
clddf=0,si、di自动+1
rep movsb
hlt3. 在da1开始的4个单元中存放着一个32位数,求出其中的“1”的个数,并存入count单元中。
解:data segment
da1 dd 12345678h
count db 00h
data ends
code sengment
assume cs:code,ds:data
start: mov ax, data
mov ds, ax
mov si, offset da1
mov bl, 00h
mov bh, 8
mov cx, 4
a2: mov al, byte ptr [si]
aa: ror al, 1
jnc l1
inc bl
l1: dec bh
jnz aa
inc si
loop a2
mov count, bl
mov ah, 4ch
int 21h
code ends
end start
data segment
data1 db feh,86h,7ch,35h
count db 00h
data ends
stack segment
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
mov ax,stack
mov si,offset data1
mov bx,[si]
mov dx,[si+2]
mov cx,32
xor al,al
lp1:rcr dx
rcr bx
jnc lp2
inc al
lp2:loop lp1
mov count,al
mov ah,4ch
int 21h
hltp205
1. 下列变量各占多少字节?
a1 dw 23h,5876h4字节。
a2 db 3 dup(?)0ah,0dh6字节。
a3 dd 5 dup(1234h,567890h) 4×2×5=40字节。
a4 db 4 dup(3 dup(1,2,‘abc’))5×3×4=60字节。
5. 对于下面的数据定义,各条mov指令执行后,有关寄存器的内容是什么?
da1 db ?
da2 dw 10 dup(?)
da3 db ‘abcd’
mov ax,type da1
mov bx,size da2
mov cx,length da3
解:各条mov指令执行后,有关寄存器的内容如下:
mov ax,type da1ax)= 1
mov bx,size da2bx)= 20
mov cx,length da3 ;(cx)=1
6. 下段程序完成后,ah等于什么?
in al,5fh
test al,80h
jz l1mov ah,0
jmp stop
l1:mov ah,0ffh
stop:hlt
解:如果地址为5fh的外设输入到al中的数据的最高位=1,则(ah)= 0,否则,(ah)= 0ffh。
13. 将键盘上输入的一位十六进制数转换成十进制数,在屏幕上显示。
data segment
data1 db 00h
data2 db 00h
data ends
code sengment
assume cs:code,ds:data
start: mov ax, data
mov ds, ax
mov ah, 1
int 21h ;输入一个十六进制数0~9,a~f
mov data1, al
cmp al, 40h
jbl1 ;shuzi
sub al, 31h ;10h~15h,a~f的数转换成bcd码。
jmp l2
l1: sub al, 30h ;00h~09h;0~9转换成bcd码。
l2: mov bl, al
and al, 0f0h
mov cl, 4
shr al, cl
add al, 30h;bcd码的高位转换成字符。
mov dl, al
mov ah, 2
int 21h ;显示高位。
and bl, 0fh
add bl, 30h ;bcd码的低位转换成字符。
mov dl, bl
mov ah, 2
int 21h ;显示低位。
mov ah, 4ch
int 21h
code ends
end start
22. 编程序统计学生的数学成绩,分别归类90~99分,80~89分,70~79分,60~69分及60分以下,并将各段的人数送入内存单元中。
解:data segment
data1 db 89,56,78,27,85,…
data2 db 5 dup(0)
data ends
stack segment
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
mov si,offset data1
mov di,offset data2
mov cx, di-si
zh1:mov al,[si]
cmp al,90
jnl you
cmp al,80
jnl liang
cmp al,70
jnl zhong
cmp al,60
jnl jige
inc 4[di] ;存不及格的人数。
jmp tj5
you:inc [di] ;存优秀人数。
jmp tj5
liang:inc [di+1] ;存良好人数。
jmp tj5
zhong: inc [di+2] ;存成绩为中的人数。
jmp tj5
jige:inc [di+3] ;存及格的人数。
jmp tj5
tj5: inc si
loop zh1
mov ah,4ch
int 21h
code ends
end start
微机原理答案
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 ...