微机原理考试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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异号

相关文档
最新文档