微机原理考试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题(一)
1、看懂以下8086宏汇编程序,回答问题:(本题18分)
说明: 字符的ASCII编码,数字0-9为30h-39h,0dh为回车符,0ah为换行符。
data s egment
org 100h
buf dw 5678h,0f588h ; (1) buf=100h
sum dw ?,?
count EQU ($-sum)/2 ; (2) count=?
dstri db ‘sum=’
disp db 8 dup(?),’H’,’$’
data e nds
code segment
assume cs:code, ds:data
start: mov ax, seg data
mov ds, ax
mov si, offset buf
mov di,offset sum
xor dx,dx ; dx清0
mov ax, [si] ; (3) (ax)=5678h
mov bx,[si+2] ;(4) (bx)= 0f588h
add ax, bx
adc dx, 0
mov [di], ax ; (5) (ax)= 4c00h
mov [di+2],dx ; (6) (dx)=0001
call h2asc
mov dx, offset dstri
mov ah,09 ; dos调用09号,以$为结束符的字符串输出显示。
int 21h
mov ah, 4ch ; dos调用4ch号,程序终止。
int 21h
h2asc proc
mov si,offset sum+2 ; 指向待处理的高位字地址
mov di,offset disp ; 指向处理后存放ASCII码的地址
mov dl,count
begin : mov bx,[si] ; 先处理高位字,再处理低位字
mov ch, 4
rot: mov cl, 4
rol bx, cl ; bx的内容小循环左移cl次
mov al, bl
and al, 0fh ; 屏蔽高4位
add al, 30h
cmp al, 3ah
jl enter
add al, 7
enter: mov [di], al
inc di
dec ch
jnz rot
sub si,2
dec dl
jnz begin
ret
h2asc endp
code e nds
end start
问题:(1)程序中定义了几个段?各段的名字是什么?(2分)
(2)程序中定义了几个内存变量?变量名是什么?数据区共占用了多少个内存单元(字节数)(4分)?
(3)h2asc过程的功能是什么?该程序中加30h和加07的作用是什么?(3分)
(4)详细说明该程序完成了什么功能?(5分)
对程序中6个问题填空。(4分)
2、看懂以下8086宏汇编程序,回答问题:
X_SEG SEGMENT
X DW 12eH
X_SEG ENDS
Y_SEG SEGMENT
Y DW 4d2H
Y_SEG ENDS
Z_SEG SEGMENT STACK ‘STACK’
Z DW 2CAH
Z_SEG ENDS
Code SEGMENT
ASSUME CS:Code,DS:X_SEG,ES:Y_SEG,SS:Z_SEG
Start: MOV AX, X_SEG
MOV DS, AX
MOV AX, Y_SEG
MOV ES, AX
MOV AX,ES:Y ; AX= (1) ?
ADD X, AX ; X= (2) ?
MOV BP, 0
MOV AX, [BP+Z] ; AX= (3) ?
ADD X, AX ; X= (4) ?
MOV AH, 4CH
INT 21H
Code ENDS
END Start
问题:(1)程序中定义了几个段?各段的名字是什么?(3分)
(2)程序中定义了几个内存变量?变量名是什么?各变量各占用了多少个内存单元(字节数)(4分)?
(3)对程序中4个问题填空。(4分)
(4)详细说明该程序完成了什么功能?(4分)
数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X、Y和Z,在程序段中将X+Y+Z的结果送X。
3、看懂以下8086宏汇编程序,回答问题:
D_SEG SEGMENT
DADD1 DD 98765
SUM DD ?
D_SEG ENDS
E_SEG SEGMENT
DADD2 DD -15893
E_SEG ENDS
C_SEG SEGMENT
ASSUME CS: C_SEG,DS:D_SEG,ES:E_SEG
Start: MOV AX, D_SEG
MOV DS, AX
MOV AX, E_SEG
MOV ES, AX
MOV AX,WORD PTR DADD1 ;(AX)=?(1)
MOV BX,WORD PTR DADD1+2 ;(BX)=?(2)
ADD AX, WORD PTR ES:DADD2 ;(AX)=?(3)
ADC BX, WORD PTR ES:DADD2+2 ;(BX)=?(4)
MOV WORD PTR SUM, AX
MOV WORD PTR SUM+2, BX ; [SUM]=?(5)
MOV AH, 4CH
INT 21H
C_SEG ENDS
END Start
问题:(1)程序中定义了几个段?各段的名字是什么?(4分)
(2)程序中定义了几个内存变量?变量名是什么?各变量各占用了多少个内存单元(字节数)(4分)?
(3)对程序中5个问题填空。(5分)
(4)详细说明该程序完成了什么功能?(5分)
在代码段C_SEG中,要求把数据段D_SEG中的DADD1和附加段E_SEG中的DADD2相加,并把结果存放在D_SEG段中的SUM中(3分)。其中DADD1、DADD2和SUM均为双字类型(1分),DADD1赋值为98765,DADD2赋值为-15893(1分)。
程序填空及编程题:
1、下列程序是完成计算下面函数值的程序(x,y的值在-128~+127之间)
-1 x>=0,y>=0
a= 1 x<0,y<0
0 x,y异号