1.(1)偏移地址0000h(lname);49h,42h,4dh,2dh,50h,43h,20h,74h,65h,73h,74h,24h
偏移地址000ch(address);00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
偏移地址001bh(entry):03h
偏移地址001ch(code_list):0bh,07h,08h,03h,02h
2)mov ax,offset lname
2. string dw ‘ba’, 0,’dc’,0,’fe’,0
3.buf1:01h 0ffh 41h 42h --01h --01h
buf2:--0ah
count =8
4.(1)3000h,2000h
2)64h,14h
5.(1)测试num单元中的两个数,若第一个数为奇数,程序结束;
若第一个数为偶数,第二个数为奇数,则把第二个数送到第一个数所在单元,程序结束;
若第。一、第二个数均为偶数,则两个数各加1,程序结束。
2)程序执行后(num)= 0d h,(num+1)= 0d h。
6. data segment
buf db x1,x2,x3, …xn
pbuf db ?
plen db ?
nbuf db 30 dup(?)
nlen db ?
data ends
code segment
assume cs:code,,ds:data
start: mov ax,data
mov ds,ax
mov bx,0
mov si,offset buf
mov di,0
mov cx,30
lop: mov al, [si]
nc si
cmp al,0
jge lop1
mov nbuf[bx],al
inc bx
jmp next
lop1: mov buf[di], al
next: loop lop
mov plen,di
mov nlen,bx
mov ah,4ch
int 21h
code ends
end start
7. mov al,‘b’
mov ah,2
int 21h
8. cmp dest,src。根据标志位来判断比较的结果。
1)根据zf判断两个数是否相等。若zf=1,则两数相等。
2)若zf=0,则两个数不相等,则分两种情况考虑:
①比较的是两个无符号数。
若cf=0,则dest>src;
若cf=1,则dest<src。
②比较的是两个有符号数。
若of⊕sf=0,则dest>src;
若of⊕sf=1,则dest<src。
9mov bx,3000h
mov al,[bx]
inc bx
mov cx,99
again: cmp al,[bx]
jb next
mov al,[bx]
next: inc bx
dec cx
jnz again
mov [4000h],al
hlt10.相同点: 都是一次定义,多次调用。
不同点:① 执行形式:宏命令伪指令由宏汇编程序在汇编过理中进行处理;而call、ret则是由cpu执行的指令。
② 汇编结果:宏命令伪指令汇编后被展开。
③ 执行速度:宏命令执行速度较快(因无调用转移)
④ 占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存单元;
使用过程可以节省**(源程序和目标程序)占用的内存空间。
11. [buf]= 35=23h
12. 执行上述程序段后bx的内容是 0c02dh
13. 上述程序段的功能是 : 以’*’作为结束标志,求字符串长度。
14.data segment
f dw 0,1,8 dup(?)
data ends
程序段如下:
mov cx,8
mov si,offset f
add si,4
again:mov ax,[si-4]
add ax,[si-2]
mov [si],ax
inc si
inc si
dec cx
jnz again
15. start: push cs
push ip
mov ax,0
mov es,ax
mov di,4*60h
mov ax,offset function
stoswmov ax,seg function
stoswint 60h
function proc
mov al,dat
cmp al,dat+1
jnc l1
mov ah,dat+1
mov by1,al
mov al,ah
l1: sub al,dat+1
aasfunction endp
16. data segment
dat db 3,4,2,3,4,6,7,8,9,19
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,10
mov si,offset dat1
lp1: call paixu
inc si
loop lp1
mov dx,offset dat1
mov ah,09h
int 21h
inc dx
mov cx,08h
mov ax,0
lpadd: add ax,ptr bytr[dx]
loop lpadd
mov bl,8
div bl
mov **g,ah
mov ah,4ch
int 21h
paixu proc near
push cx
push si
mov al,[si]
cmplp: cmp al,byte ptr[si+1]
jge next
mov bl,[si+1]
mov [si],bl
mov [si+1],al
mov al,bl
next: inc si
loop cmplp
pop si
pop cx
paixu endp
code ends
end start
定义堆栈段。
sseg segment stack
dw 100 dup(?)
tos label word
sseg ends
定义数据段。
dseg segment
data1 db 98h,11h,62h;定义数据621198h
data2 db 67h,80h,21h;定义数据218067h
data3 db 3 dup(?)保留结果单元。
dseg ends
定义**段。
cseg segment
assume cs:cseg,ds:dseg,ss:sseg
start proc far
mov sp,offset tos
mov ax,dseg
mov ds,ax
mov bx,offset data1;bx为数据1指针。
mov si, offset data2;si为数据2指针。
mov di, offset data3;di为数据3指针。
mov cx,3循环次数。
clc清进位。
next完成十进制数加法。
mov al,[bx]
adc al,[si]
daamov [di],al
inc bx
inc si
inc di
loop next
display显示结果。
push di
mov di,bx
call crlf把光标移到下一行的首列。
call dispp显示第一个数据。
mov dl显示‘+’号。
mov ah,2
int 21h
mov di,si
call dispp显示第二个数据。
mov dl显示‘=’号。
mov ah,2
int 21h
pop di
call dispp显示结果数据。
call crlf
mov ah,4ch
int 21h
start endp
显示di指针所指的6位10进制数据。
dispp proc
mov cx,3
dec di
displ: mov dl,[di]
push cx
mov cl,4
shr dl,cl
pop cx
add dl,30h
mov ah,2
int 21h
mov dl,[di]
and dl,0fh
微机原理答案
1.串行通信与并行通信的主要区别是什么?各有优缺点?答 按信息的传送方式可将数据通信分为并行通信与串行通信两种 并行通信 是指利用多条数据传输线将一个数据的各位同时进行传送。特点 传输速度快,适用于短距离通信。串行通信 是指利用一条传输线将数据的各位一位位地顺序进行传送。串行通信又可分为异步通信和同...
一微机答案
一 答案 二 答案 1.2 5 2.3 5 顺序可以换。三 答案。存储程序控制 当前 段内下一条要执行指令的偏移量 相加和移位 全局描述符表和中断描述符表局部描述符表和任务状态 可屏蔽 不可屏蔽中断 ax 0cfh 1200h 0100h 0200h 总线请求和仲裁阶段寻址阶段数据传送阶段结束阶段 ...
微机原理答案
第3章 8086 8088指令系统与寻址方式习题。3 3 8086系统中,设ds 1000h,es 2000h,ss 1200h,bx 0300h,si 0200h,bp 0100h,var的偏移量为0600h,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。1...