文档库 最新最全的文档下载
当前位置:文档库 › 微机原理程序题

微机原理程序题

微机原理程序题
微机原理程序题

1. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中sign与sinteger 均为双字变量。

if ( sinteger = = 0)

sign = = 0;

else If ( siteger > 0)

sign = 1;

else

sign = -1;

mov eax,sinteger

mov edx,sign

cmp eax,0

jnz L1

mov ebx,0

L1:cmp ebx,0

jl L2

mov ebx,1

L2:mov ebx,-1

2. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中ch1与caps均为字节变量。

if (ch1> =’a’ && ch1< =’z’)

caps= =0;

if (ch1> =’A’ && ch1< =’Z’)

caps= =1;

mov ax,ch1

mov bx,caps

cmp ax,a

jb next

cmp ax,z

ja next

mov bx,0

next:cmp ax,A

jl done

cmp ax,Z

ja done

done:

3. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中sum与i变量均为双字变量。

sum=0;

for ( i=1;i< =100;i++)

if ( i%2= =0)

sum=sum+i;

mov ecx,i

mov ecx,1

.while(ecx<=100)

mov eax,ecx

xor edx,edx

mov ebx,2

div ebx

cmp edx,0

jnz next

add sum,ecx

next:inc ecx

.endw

1. 能被4整除但不能被100整除,或者年被400整除的年份是闰年。编程写一个完整的程序,求出2012年~2099年中的所有闰年年份,并把它们存放在数组Lyear中。

算法描述

; esi=0;ecx=2012;

; while (ecx<2100)

; { if (year mod 4=0 and year mod 100 <>0) or (year mod 400=0) then

; {Lyear[esi]=ecx;esi++;}

; ecx++;

; }

; Lcounter=esi;

include io32.inc

.data

Lyear dword 100 dup(?)

Lcounter dword 0

.code

mainproc

xor esi,esi ;esi闰年个数计数器,兼做Lyear下标。

mov ecx,2012 ;ecx年份计数器。

.while (ecx<2100)

mov eax,ecx

xor edx,edx

mov ebx,400

div ebx

cmp edx,0

jz leap ;if year mod 400=0 then goto leap

mov eax,ecx

xor edx,edx

mov ebx,4

div ebx

cmp edx,0

jnz next ;if year mod 4<>0 then goto next

mov eax,ecx

xor edx,edx

mov ebx,100

div ebx

cmp edx,0

jz next ;if year mod 100=0 then goto next

leap: mov Lyear[esi*4],ecx

inc esi

mov eax,ecx

call dispuid ;输出,用于验证。可以删掉

call dispcrlf ;输出,用于验证。可以删掉

next: inc ecx

.endw

mov Lcounter,esi

mov eax,esi

call d ispuid ;输出,用于验证。可以删掉

call d ispcrlf ;输出,用于验证。可以删掉

ret

mainendp ;end of main

end main ;end of assembly

2. 编程写一个完整的程序,求出2~100之间的所有素数,并将它们存入Prime数组中,素数的个数存入变量Pcounter中。

; 采用伪代码pseudo code描述算法

; 1. i=2 to 100 do

; 1.1 if i is prime number then print i

; 细化1.1 如下:

; 1.1 j=2 to i/2 do

; 1.1.1 if i mod j=0 then goto next i

; 1.1.2 print i

; 合理分配寄存器,i=ebx,j=ecx,edxeax做被除数,ecx做除数.

include io32.inc

.data

msg byte ' List of prime number',13,10,0

msg1 byte ' Lcounter is :' ,13,10,0

blank byte ' ',0

prime dword 100 dup(?)

pcounter dword 0

.code

mainproc ;主程序开始

mov esi,0

mov eax,offset msg

call d ispmsg

mov ebx,2

iLoop: cmp ebx,100 ;i循环入口

ja done

mov ecx,ebx

shr ecx,1 ;j=i/2

jLoop: cmp ecx,2 ;j循环入口

jb print

mov eax,ebx

cdq ;xor edx,edx

div ecx ;被除数送eax,32位除法

or edx,edx ;cmp edx,0

jz nexti ;if i mod j=0 then goto next i

dec ecx

jmp jLoop

print: mov prime[esi*4],ebx

inc esi

mov eax,ebx

mov eax,offset blank

call d ispmsg ;显示空格

nexti: inc ebx ;i=i+1

jmp iLoop

done: call dispcrlf

mov eax,offset msg1

call d ispmsg

mov pcounter,esi

mov eax,esi

call dispuid

call dispcrlf

ret ;返回操作系统

mainendp ;主程序结束

end main ;end of assembly

3. 编程写一个完整的程序,将数组aray中的元素按逆序存放,要求程序中附加的变量最少。数据段的定义如下:

.data

aray dword 12,4, 168,122,-33,56,78,99,345, 66,-5

; 采用伪代码pseudo code描述算法

; 1. i=n-1 downto 1 do

; 1.1 j=0 to i-1

; 1.1.1 if a[j]>a[j+1] then swap

; 合理分配寄存器,i=ecx,j=edx ,i-1=ecx-1

include io32.inc

.data ;set data segment

blank3 byte 3 dup(20h),0

array dword 12,4,-168,122,33,56,78,99,345,-66,-5

char byte ?

msg byte 13,10,'press any key to continue ...',0 ;字符串

.code

mainproc

mov ecx,(lengthof array)-1 ;计数循环的初值

iLoop: ;i循环入口

dec ecx ;ecx=i-1

xor edx,edx

jLoop: ;j循环入口,循环控制变量edx

cmp edx,ecx

jg nexti

mov eax,array[edx*4]

cmp eax,array[edx*4+4]

jge nextj

xchg eax,array[edx*4+4]

mov array[edx*4],eax

nextj: inc edx

jmp jLoop

nexti: inc ecx ;retrieve ecx

loop iLoop

print: xor ecx,ecx

again: cmp ecx,lengthof array-1

jg done

mov eax,array[ecx*4]

call dispsid

mov eax,offset blank3 ;显示空格

call dispmsg

inc ecx

jmp again

done: mov eax,offset msg ;显示:press any key to continue

call dispmsg

mov eax,offset char ;暂停,等待按任意键

call readc

ret ;返回操作系统

mainendp

end main ;end of assembly

4. 编程写一个完整的程序,求数组aray中的最大值与最小值,并将它们分别存入max和min 元中。数据段的定义如下:

.data

aray dword 12,4,-168,122,-33,56,78,99,345,-66,-5

min dword ?

max dword ?

include io32.inc

.data

aray dword 12,4,-168,122,-33,56,78,99,345,-66,-5

min dword ?

max dword ?

prompt byte 'Enter an integers :',0

maxStr byte 'max=%d',13,10,0 ;显示字符串的格式描述串

minStr byte 'min=%d',13,10,0

main proc

mov ecx,lengthof ara -1

mov eax,ara[0] ;eax:max

mov ebx,eax ;ebx,min

mov esi,1

again: cmp eax,ara[esi*4]

jge small

mov eax,ara[esi*4]

small: cmp ebx,ara[esi*4]

jle next

mov ebx,ara[esi*4]

next: inc esi

loop again

mov max,eax

mov min,ebx

ret ;返回操作系统

main endp

end main

5. 编程写一个完整的程序统计msg中的空格的个数与小写字母的个数,并分别将它们存入space单元与char单元中。数据段的定义如下:

.data

msg byte 'I love XUT !',13,10,0

space dword ?

char dword ?

include io32.inc

.data

msg byte 'I love XUT!',13,10,0

space dword ?

char dword ?

.code

main proc

mov ebx,0

xor edi,edi

mov esi,edi

l1: mov al,msg[ebx]

cmp al,20h

jnz done1

cmp al,0

jz next

inc edi

inc ebx

jmp l1

done1: cmp al,'a'

cmp al,'z'

ja done2

cmp al,0

jz next

inc esi

inc ebx

jmp l1

done2: cmp al,0

jz next

inc ebx

jmp l1

next: mov space,edi

mov eax,space

call dispuid

call dispcrlf

mov char,esi

mov eax,char

call dispuid

call dispcrlf

ret

main endp

end main

6. 编程写一个完整的程序,将字符串msg中所有的小写字母转换为大写字母。数据段的定义如下:

.data

msg byte 'I love XUT !',13,10,0

include io32.inc

.data

msg byte 'I love XUT!',13,10,0

.code

main proc

mov ebx,0

l1: mov al,msg[ebx]

cmp al,'a'

jb done

cmp al,'z'

ja done

sub al,20h

done: cmp al,0

jz done1

inc ebx

call dispc

jmp l1

ret

main endp

end main

7. array是一无符号数数组,数据段的定义如下。要求:编程写一个完整的程序求出数组元素中偶数的和,并将它存入esum单元中。

.data

array dword 12,34,123,78,43,234,79,86,98,20

esum dword ?

算法描述:

; 1. esum=0;

; 2. for i=0 to n-1 do

; if a[i] is evennunber then esum=esum+a[i];

; 判断偶数,采用test 指令测试最低位。

; 合理分配寄存器:采用loop循环,ecx=lengthof array esum=eax=0,esi=0,做下标,采用带比例因子的相对寻址处理数组。

include io32.inc

.data

array dword 12,34,123,78,43,234,79,86,98,20

esum dword ?

fmtStr byte ' esum=%d',13,10,0 ;格式描述串

.code

main proc

mov ecx,lengthof array

xor eax,eax ;esum=eax=0

mov esi,eax ;数组下标

again: mov ebx,array[esi*4]

test ebx,1

jnz next ;if a[i] is evennunber then esum=esum+a[i];

add eax,ebx ;注意:转换成汇编语言时,测试的是不是偶数时则取下一个数测试。

next:inc esi

loop again

mov esum,eax

invoke printf,offset fmtStr,esum

ret ;return to Windows

main endp ;end of main

end main ;end of assembly

8. “回文串”是一个正读和反读都一样的字符串,比如“eye”、“level”、“noon”等

。请写一个程序测试一字符串是否是“回文”,是“回文”则显示“Y”,否则显示“N”。显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。

; 算法描述:

; left,right分别指向串的第一个和最后一个元素,采用首尾比较。

; 1. left=0,right=n-1 ,flag='Y' ;

; 2. while left

; if a[left++]<>a[right--] then

; { flag= 'N'; break;}

; 3. printf flag

; 合理分配寄存器:left=esi,right=edi ,flag=al='Y'

include io32.inc

.data

msg byte 'level',0

count equ lengthof msg

.code

mainproc

mov esi,0 ;left指针

mov edi,count-2 ;right指针,串长不包括结束标志0

mov al,'Y' ; flag=al='Y'

.while (esi

mov ah,msg[esi] ; left=esi

cmp ah,msg[edi] ; right=edi

je next

mov al,'N'

jmp display

next: inc esi ;移动指针指向下一个元素

dec edi ;移动指针指向下一个元素

.endw

display: call dispc

call dispcrlf

ret ;return to Windows

main endp ;end of main

end main ;end of assembly

9. 回文是指正读和反读都一样的数或文本。例如:11、121、12321等,编写程序,求10到10000之间所有回文数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。

include io32.inc

.data

blank byte ' ',0

char byte ?

anykey byte 13,10,'press any key to continue...',0

.code

main proc

mov ecx,10

mov ebx,ecx

.repeat

xor esi,esi

mov eax,ecx

.while(eax>0)

xor edx,edx

div ebx

imul esi,10

add esi,edx

.endw

cmp esi,ecx

jne next

mov eax,ecx

call dispuid

call dispcrlf

next: inc ecx

.until(ecx>10000)

ret

main endp

end main

10. 编程写一个名为Prime的子程序,用于测试一个整数是否是素数,主子程序间的参数传递通过堆栈完成。调用Prime子程序求出2~100之间的所有素数,并将它们存入Parray数组中,素数的个数存入变量Pcounter中。

; 采用伪代码pseudo code描述算法

; 1. i=2 to 100 do

; 1.1 if prime(i) then print i

; 构造函数prime(i):

; if i is prime number then prime(i)=1 else prime(i)=0

; 合理分配寄存器,i=ebx,j=ecx,edxeax做被除数,ecx做除数.

include io32.inc

.data

msg byte ' List of prime number',13,10,0

msg1 byte ' pcounter is :' ,13,10,0

blank byte ' ',0

anyKey byte 13,10,'press any key to continue ...',13,10,0

parray dword 100 dup(?)

pcounter dword 0

.code

mainproc ;主程序开始

mov esi,0

mov eax,offset msg

call d ispmsg

mov ebx,2 ;i循环的初值

.while (ebx<=100) ;i循环入口

push ebx ;push parameter on stack参数进栈

call prime

test eax,eax

jz next

l1: mov parray[esi*4],ebx

inc esi

mov eax,ebx

call dispuid ;输出,用于验证。可以删掉

mov eax,offset blank

call dispmsg

next: inc ebx

.endw

call dispcrlf

mov eax,offset msg1

call d ispmsg

mov pcounter,esi

mov eax,esi

call dispuid

call dispcrlf

ret ;返回操作系统mainendp ;主程序结束

; function: 判断一个无符号整数i是否是素数

; Receives: 从栈获取无符号整数i

; Returns: if i is prime number then eax=1 else eax=0

; 采用伪代码pseudo code描述算法

; 1 j=2 to i/2 do

; 1.1 if i mod j=0 then {eax=0 return}

; 2 eax=1;return

; 合理分配寄存器,j=ecx,edxeax做被除数,ecx做除数. prime proc

push ebp ;save ebp

mov ebp,esp

push ecx

push edx

push edi

push esi ;save ,ecx,edx,edi,esi

mov esi,[ebp+8] ;get parameter i

mov edi,esi

shr esi,1 ;esi=i/2

mov ecx,2 ;j循环入口

.while (ecx<=esi)

mov eax,edi

xor edx,edx ;edx=0

div ecx ;被除数送eax,32位除法

or edx,edx ;cmp edx,0

jz retZero ;if i mod j=0 then eax=0

inc ecx

.endw

mov eax,1 ;i是否是素数eax=1

jmp restoreReg

retZero: mov eax,0

restoreReg:

pop esi

pop edi

pop edx

pop ecx

pop ebp

ret 1*4 ;clean up stack

prime endp

end main ;end of assembly

11. 编程写一个名为Gcd的求两个数最大公约数子程序,主子程序间的参数传递通过堆栈完成。调用Gcd子程序求出三个双自变量:dvar1、dvar2与dvar3的最大公约数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。

include io32.inc

.data

dvar1 dword 2012

dvar2 dword 128

dvar3 dword 456

dgcd dword ? ;存放2个无符号整数的最大公约数

fmtStr byte ' gcd(%d,%d,%d)=%d',13,10,0

.code

mainproc

push dvar1

push dvar2 ;参数dvar1,dvar2进栈,传值

push offset dgcd ;dgcd的地址进栈,传地址

call Gcd ;dgcd=dvar1,dvar2的最大公约数

push dvar3

push dgcd ;参数dvar3,dgcd进栈,传值

push offset dgcd ;dgcd的地址进栈,传地址

call Gcd

invoke printf,offset fmtStr,dvar1,dvar2,dvar3,dgcd

ret ;return to Windows

mainendp ;end of main

Gcd proc

; function: 求2个无符号整数的最大公约数。

; Receives: 从栈中获取无符号整数a,b及存放最大公约数变量gcd的地址

; Returns: gcd=无符号整数a,b的最大公约数。

; 算法描述:

; 1. while b<>0 do

; { r=a mod b;a=b;b=r;}

; 2. gcd=a;

; 注意合理的分配使用寄存器,edx,eax做被除数

; ebx=gcd的地址,eax=a,ecx=b

push ebp

mov ebp,esp ; 建立访问栈参数的指针基准

push eax ; 保护子程序中要使用的寄存器

push ebx

push ecx

push edx

mov ebx,[ebp+8] ;ebx=变量gcd的地址

mov ecx,[ebp+12] ;ecx=b

mov eax,[ebp+16] ;eax=a

.while (ecx!=0)

xor edx,edx ;被除数送edx,eax,32位除法

div ecx ;div指令执行后eax=商,edx=余数

mov eax,ecx ;a=b

mov ecx,edx ;b=r,edx=余数

.endw

mov [ebx],eax ;gcd=最大公约数

restore: pop edx ; 恢复子程序中使用过的寄存器

pop ecx

pop ebx

pop eax

pop ebp

ret 3*4 ;清理栈中的参数

Gcd endp ;end of Gcd

end main ;end of assembly

12. 在一个已知长度的字符串中查找是否包含“BUG”子字符串。如果存在,显示“Y”,否则显示“N”。显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII 码。

include io32.inc

.data

string byte 'If you find any error in the program, you can DEBUG it.'

count = sizeof string

bug byte 'BUG'

.code

start:

mov ecx,count

mov edi,offset string

L1: mov esi,offset bug

push edi

mov edx,sizeof bug

LN: mov al,[esi]

cmp [edi],al

jne L2

inc esi

inc edi

dec edx

jne LN

pop edi

mov al,'Y'

jmp L3

L2: pop edi

inc edi

loop L1

mov al,'N'

L3: call dispc

exit 0

end start

13. 已知一个字符串的长度,剔除其中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理。

include io32.inc

.data

string byte 'Let us have a try !',0dh,0ah,0

.code

start:mov ecx,sizeof string

cmp ecx,2

jb done

lea eax,string ; 显示处理前的字符串

call dispmsg

mov esi,ecx

dec esi

outlp: cmp string[esi],' ' ; 检测是否是空格

jnz next ; 不是空格继续循环

mov edi,esi ; 是空格,进入剔除空格分支

dec ecx

inlp: inc edi

mov al,string[edi] ; 前移一个位置

mov string[edi-1],al

cmp edi,ecx

jb inlp

next: dec esi ; 继续进行

cmp esi,0

jnz outlp ; 为0结束

lea eax,string ; 显示处理后的字符串

call dispmsg

done: exit 0

end start

14. 编写一子程序,将一个32位二进制数用8位十六进制形式在屏幕上显示出来。采用堆栈方法传递这个32位二进制数,并写主程序验证它。显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。

.include io32.inc

.data

wvar dword 307281AFH

.code

start:push wvar

call disp

add esp,4

mov al,'H'

call dispc

disp proc

push ebp

mov ebp,esp

push ebx

push ecx

mov ecx,8

mov eax,[ebp+8]

dhw1: rol eax,4

mov ebx,eax

and al,0fh ; 转换为ASCII码

add al,30h

cmp al,'9'

jbe dhw2

add al,7

dhw2: call dispc

mov eax,ebx

loop dhw1

pop ecx

pop ebx

pop ebp

ret

disp endp

exit 0

end start

15. 编程写一个名为Bubble的冒泡排序子程序,主子程序间的参数传递通过堆栈完成;并写主程序验证它。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。

.include io32.inc

data

array dword 12,4,168,122,-33,56,78,99,345,66,-5

count equ lengthof array

fmtStr byte '%5d'

.code

main proc

push offset array ;array的首地址进栈,传地址

push count ;数组元素的个数进栈,传值

call Bubble

xor esi,esi ;以下的while循环用于验证。可以删掉.while (esi

pushad

popad

inc esi

.endw

ret ;return to Windows

main endp ;end of main

Bubble proc

; function: Bubble Sort

; Receives: 从栈获取数组的首地址及元素的个数

; Returns: 无

; 算法描述:

; 1. ecx=n-1;

; 2. while ecx>0

; { esi=array;数组的首地址

; ebx=ecx;

; while ebx>0

; { if [esi]>[esi+4] then

; swap [esi],[esi+4] ;

; esi=esi+4;ebx--;

; }

; ecx--;}

push ebp

mov ebp,esp ; 建立访问栈参数的指针基准

push eax ; 保护子程序中要使用的寄存器

push ebx

push ecx

push esi

push edi

mov esi,[ebp+12] ;array的首地址

mov edi,esi

mov ecx,[ebp+8] ;数组元素的个数

dec ecx

again: mov esi,edi ;esi=array的首地址

mov ebx,ecx

.while (ebx>0)

mov eax,[esi]

cmp eax,[esi+4] ; 比较两个相邻的元素

jl next

xchg eax,[esi+4]

mov [esi],eax ; 交换两个相邻的元素

next: add esi,4 ; esi指向下一个元素dec ebx

.endw

loop again

restore: pop edi ; 恢复子程序中使用过的寄存器

pop esi

pop ecx

pop ebx

pop eax

pop ebp

ret 2*4 ;清理栈中的参数

Bubble endp ;end of Bubble

end main ;end of assembly

《Python程序设计》题库 - 读程序题

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1#Filename:002.py 2 i = int(raw_input('Enter the profit:')) 3 arr = [1000000,600000,400000,200000,100000,0] 4 rat = [0.01,0.015,0.03,0.05,0.075,0.1] 5 r = 0 6for idx in range(0,6): 7if i>arr[idx]: 8 r+=(i-arr[idx])*rat[idx] 9print (i-arr[idx])*rat[idx] 10 i=arr[idx] 11print r 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【感谢12楼的同学peiqianggao提供代码】 # -*- coding:utf-8 -*- ''' Created on 2015-6-7 # 第三题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 @author: Administrator ''' import math num = 1 while True:

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

微机原理试题及答案

微机原理试题及答案 微机原理试题及答案 一、填空题(每空1分,共15分) 1、在计算机中,对带符号数的运算均采用补码。带符号负数1100 0011的补码为_10111101_。2、单片机通常采用“三总线”的应用模式,芯片内部设有单独的地址总线、数据总线_ 和控制总线。 3、当使用80C51单片机时,需要扩展外部程序存储器,此时EA应为_0__。 4、若(A)=B3H,(R0)=A8H,执行指令XRL A,R0之后,(A)=_1BH__。 5、在80C51单片机中,带借位减法SUBB指令中,差的D7需借位时,_CY_=1,差的D3需借位时,AC_=1。 6、80C51单片机中,在调用子程序前,用_PUSH__指令将子程序中所需数据压入堆栈,进入执行子程序时,再用___POP__指令从堆栈中弹出数据。 7、在十六进制数与ASCII码值的转换过程中,当十六进制数在0~9之间时,其对应的ASCII码值为该十六进制数加___30H______。 8、外部中断INT0和INT1有两种触发方式:___电平触发方式_____和__边沿触发方式__。 9、在单片机串行通信中,依发送与接收设备时钟的配置情况,串行通信可以分为 __异步通信___和__同步通信_。10、若累加器A中的数据为

0111 0010B,则PSW中的P=__0___。二、选择题(每题1分,共15分) 1、单片机是在一片集成电路芯片上集成了以下部分,除了( D ) A、微处理器 B、存储器 C、I/O接口电路 D、串口通信接口2、一个机器周期包含多少个晶振周期(D ) A、2 B、6 C、8 D、12 3、80C51单片机有21个特殊功能寄存器,其中与串行口相关的有以下几个,除了( B ) A、SBUF B、TCON C、SCON D、PCON 4、 80C51系列单片机具有4个8位的并行I/O口,其中哪个口工作时需要外接上拉电阻(A ) A、P0 B、P1 C、P2 D、P3 5、寄存器中的内容为地址,从该地址去取操作数的寻址方式称为( C ) A、寄存器寻址 B、直接寻址 C、寄存器间接寻址 D、变址寻址6、源地址为1005H。目的'地址为 0F87H。当执行指令“JC rel”时,rel为( B )。A、7EH B、80H C、82H D、84H 7、若(R0)=30H,(30H)=75H,(75H)=90H,执行指令MOV A,@R0后,(A)=__B____。A、30H B、75H C、90H D、00H 8、下列哪个语句是起始地址设置伪指令( A )。A、ORG B、END C、DW D、EQU 9、在80C51单片机中,各中断优先级最低的是( D )。A、外部中断0 B、外部中断1 C、定时器0 D、计数器1 10、80C51单片机的中断响应时间至少需要( C )个完整的机器周期。A、1 B、2 C、3 D、5 11、在80C51单片机中,

微机原理-期末考试题库及答案(含3套试卷)

微型计算机原理与接口技术综合测试题一 一、单项选择题(下面题只有一个答案是正确的,选择正确答案填入空白处) 1.8086CPU通过(1 )控制线来区分是存储器访问,还是I/O访问,当CPU执行IN AL,DX 指令时,该信号线为(2 )电平。 (1) A. M/ B. C. ALE D. N/ (2) A. 高 B. 低 C. ECL D. CMOS 2.n+1位有符号数x的补码表示范围为()。 A. -2n < x < 2n B. -2n ≤ x ≤ 2n -1 C. -2n -1 ≤ x ≤ 2n-1 D. -2n < x ≤ 2n 3.若要使寄存器AL中的高4位不变,低4位为0,所用指令为()。 A. AND AL, 0FH B. AND AL, 0FOH C. OR AL, 0FH D. OR AL 0FOH 4.下列MOV指令中,不正确的指令是()。 A. MOV AX, BX B. MOV AX, [BX] C. MOV AX, CX D. MOV AX, [CX] 5.中断指令INT 17H的中断服务程序的入口地址放在中断向量表地址()开始的4个存贮单元内。 A. 00017H B. 00068H C. 0005CH D. 0005EH 6.条件转移指令JNE的条件是()。 A. CF=0 B. CF=1 C. ZF=0 D. ZF=1 7. 在8086/8088 CPU中,一个最基本的总线读写周期由(1 )时钟周期(T状态)组成,在T1状态,CPU往总线上发(2 )信息。 ⑴ A. 1个 B. 2个 C. 4个 D. 6个

⑵ A. 数据 B . 地址 C. 状态 D. 其它 8. 8086有两种工作模式, 最小模式的特点是(1 ),最大模式的特点是(2 )。 ⑴ A. CPU提供全部控制信号 B. 由编程进行模式设定 C. 不需要8286收发器 D. 需要总线控制器8288 ⑵ A. M/ 引脚可直接引用 B. 由编程进行模式设定 C. 需要总线控制器8288 D. 适用于单一处理机系统 9.在8086微机系统的RAM 存储单元器0000H:002CH开始依次存放23H,0FFH,00H,和0F0H四个字节,该向量对应的中断号是( )。 A. 0AH B. 0BH C. 0CH D. 0DH 10.真值超出机器数表示范围称为溢出,,此时标志寄存器中的( )位被置位 A. OF B AF C PF D CF 11.8086 系统中内存储器地址空间为1M,而在进行I/O读写是,有效的地址线是( ) A . 高16位 B. 低16位 C. 高8位 D. 低8位 12.8086 CPU中段寄存器用来存放( ) A. 存储器的物理地址 B. 存储器的逻辑地址 C. 存储器的段基值 D. 存储器的起始地址 13.8259A可编程中断控制器的中断服务寄存器ISR用于( ) A.记忆正在处理中的中断 B. 存放从外设来的中断请求信号 C.允许向CPU发中断请求 D.禁止向CPU发中断请求 14.8253 可编程定时/计数器的计数范围是( ) A. 0-255 B. 1-256 C. 0-65535 D. 1-65536 15. 在8086中,(BX)=8282H,且题中指令已在队列中,则执行INC [BX]指令需要的总

C语言程序设计阅读程序题库

阅读程序题 导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。习题基本上是按照教材的章节来安排的,读者可以根据学习的进度选择部分习题。【】以下程序的输出结果是。 main() {floata; printf("%g",a); } A)+00B)0.0 C)0 【】下面程序的输出结果是____。

#include<> main() {intx=10; {intx=20; printf("%d,",x); } printf("%d\n",x); } A)10,20B)20,10 C)10,10D)20,20 【】以下程序的输出结果是____。 main() {unsignedintn; inti=-521; n=i; printf("n=%u\n",n); } A)n=-521B)n=521 C)n=65015D) 【】以下程序的输出结果是。 main() {intx=10,y=10;printf("%d%d\n",x――,――y);

} A)1010B)99 C)910D)109 【】以下程序的输出结果是____。main() {intn=1; printf("%d%d%d\n",n,n++,n--); } A)111B)101 C)110D)121 【】以下程序的输出结果是____。main() {intx=0x02ff,y=0x0ff00; printf("%d\n",(x&y)>>4|0x005f);} A)127B)255 C)128D)1 【】以下程序的输出结果是____。main() {inta=1; charc='a'; floatf=;

微机原理子程序设计

实验三子程序设计 1、实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE 命令包含文件的方法。 (3)子程序设计 2.实验步骤: (1)用编辑软件记事本或EDIT 编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序TASM 汇编上述的汇编语言源程序,形成目标代码文件。 (扩展名为OBJ) (3)用连接程序TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 3.实验内容: (1)从键盘上输入若干个十进制数(-32767

again1: mov ax,[si] cmp ax,[si+2] jle next1 xchg ax,[si+2] xchg ax,[si] next1: add si,2 loop again1 mov cx,di loop again2 mov ah,9 lea dx,out_message int 21h mov cx,count ;输出(升序) lea si,array again3: mov bx,[si] call write call dpcrlf inc si inc si loop again3 mov ax,4c00h int 21h INCLUDE out_B_D.ASM INCLUDE in_D_B.ASM END (2)从键盘上输入若干个十进制数(-32767

微机原理习题集以及答案

第一部分 例题与习题 第1章 微型计算机基础 例 题 1.把十进制数转化为二进制数。P7 解:把十进制数转换成二进制数时,需要对一个数的整数部分和小数部分分别进行处理,得出结果后再合并。 整数部分:一般采用除2取余法 小数部分:一般采用乘2取整法 余数 低位 整数 高位 2 | 137 2 | 68 × 2 2 | 34 2 | 17 × 2 2 | 8 2 | 4 × 2 2 | 2 1 高位 低 位 (137)10=()2 10=2 所以,10=(.111)2 2.把二进制数转换为八进制数和十六进制数。P9 解:八进制、十六进制都是从二进制演变而来,三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数,从二进制向八进制、十六进制转换时,把二进制数以小数点为界,对小数点前后的数分别分组进行处理,不足的位数用0补足,整数部分在高位补0,小数部分在低位补0。 (10 1)2=(010 100)2=8 (1 2=(0001 2=16 3.将八进制数转换为二进制数。P9 解:8=(010 100)2=2 4.X=,Y=-,求[X -Y]补,并判断是否有溢出P11 解:[X -Y]补=[X]补+[-Y]补 [X]补= [Y]补= [-Y]补= + -------------- 1 -------------- 0 -------------- 0 -------------- 1 -------------- 0 -------------- 0 -------------- 0 -------------- 1 ------------- 1 ------------- 1 ------------- 1

C语言程序设计阅读程序题库及答案

阅读程序题 【2.1】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0 【2.2】下面程序的输出结果是B____。 #include main( ) { int x=10; { int x=20; printf ("%d,", x); } printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20 【2.3】以下程序的输出结果是___B_。 main()

{ unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }//变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。 【2.4】以下程序的输出结果是。 main(D ) { int x=10, y=10; printf("%d %d\n", x――, ――y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 【2.5】以下程序的输出结果是___B。 main() { int n=1; printf("%d %d %d\n",n,n++,n--); } // C语言在执行printf()时,对函数中的表达式表列的处理顺序是从后向前,即先处理n- -,再处理n++,最后处理n, A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1 【2.6】以下程序的输出结果是____。 main() { int x=0x02ff,y=0x0ff00;

微机原理习题及答案

一、选择 1、在微型计算机中,微处理器的主要功能是进行( )。 D A、算术运算 B、逻辑运算 C、算术、逻辑运算 D、算术、逻辑运算及全机的控制 2、Pentium I属于()位CPU C A、16 B、8 C、32 D、64 3、Intel 8086属于()位CPU A A、16 B、8 C、32 D、64 4、CPU与I/O设备间传送的信号通常有( ) D A、控制信息 B、状态信息 C、数据信息 D、以上三种都有 5、存储器用来存放计算机系统工作时所需要的信息,即( )。 D A、程序 B、数据 C、技术资料 D、程序和数据 6、运算器的核心部件是( )。 D A、加法器 B、累加寄存器 C、多路开关 D、算逻运算单元 二、填空 1、内存可分为2大类:随机存储器RAM 和 2、数据总线是向的,地址总线是向的。 3、计算机的五大部件是:、、、、输出设备 4、总线可分为三类:、、 5、存储程序工作原理最先由提出 6、在计算机内部,一切信息的存取、处理和传送都是以形式进行的。 1、只读存储器ROM 2、双、单 3、运算器、控制器、存储器、输入设备 4、地址总线、数据总线、控制总线 5、冯·诺依曼 6、二进制 三、简答 1、冯·诺依曼型计算机的特点是什么? (1).以二进制表示指令和数据 (2).程序和数据存放在存储器中,从存储器中取指令并执行 (3).由运算器、控制器、存储器、输入设备、输出设备构成计算机硬件系统。 一、选择 1、在机器数______中,零的表示形式是唯一的()。BD A、原码 B、补码 C、反码 D、移码 2、计算机内部表示带符号整数通常采用()。C A、原码 B、反码 C、补码 D、移码

《单片机》读程序题题库答案

四、阅读下列程序,注释并填写指令执行后的结果(每题10分) 1、 ORG 0 LJMP START ;跳转到(PC)=0030H处 ORG 30H START:MOV R0,#20H ;#20H->R0 (R0)=20H MOV R1,#30H ; #30H->R1 (R1)=30H MOV A,R0 ;(R0)->A (A)=20H ADD A,#36H ;(A)+#36H->A (A)=56H MOV P1,A ;(A)->P1 (P1)=56H INC R0 ;(R0)+1->R0 (R0)=21H INC R1 ;(R1)+1->R0 (R1)=31H ANL A,R1 ;(A)&(R1)->A (A)=10H SWAP A ;累加器A的高低4位交换 (A)=01H PUSH ACC ;累加器A内容压栈 MOV P1,A ;(A)->P1 (P1)=01H POP B ;堆栈内容出栈到B寄存器 (B)=01H MOV R0,A ;(A)->R0 (R0)=01H MOV DPTR,#2200H ;#2200H->DPTR (DPTR)=2200H SETB C ;1->Cy (Cy)=1 ADDC A,#0 ;(A)+0+(Cy)->A (A)=02H MOVX @DPTR,A ;(A)->(DPTR) (2200H)=02H END (R0)= 01H (R1)= 31H (P1)= 01H (B)= 01H (2200H)= 02H 2、 ORG 0 LJMP START ;跳转到(PC)=0030H处 ORG 30H START:MOV SP,#50H ;#50H->SP (SP)=50H MOV R2,#10H ;#10H->R2 (R2)=10H MOV DPTR,#3000H ;#3000H->DPTR (DPTR)=3000H CRL A ;0->A (A)=0 LOOP: MOVX @DPTR,A ;(A)->(DPTR) INC DPTR ;(DPTR)+1->DPTR DJNZ R2,LOOP ;(R2)-1->R2 若(R2)不等于零则转移到LOOP处 INC DPH ;(DPH)+1->DPH (DPH)=31H (R2)=00H (DPL)=10H INC DPH ;(DPH)+1->DPH (DPH)=32H MOV 20H,#36H ;#36H->(20H) (20H)=36H SETB 00H ;位地址00H置1 20H.0=1 (20H)=37H MOV A,20H ;(20H)->A (A)=37H MOVX @DPTR,A ;(A)->(DPTR) (DPTR)=3210H (3210H)=37H INC A ;(A)+1->A (A)=38H INC A ;(A)+1->A (A)=39H PUSH ACC ;累加器A内容压栈 (SP)=51H XCH A,R2 ;累加器A的内容与R2内容互换 (A)=00H (R2)=39H POP DPH ;堆栈内容弹到DPH (DPH)=39H

微机原理实验报告——分支程序设计

实验三 分支程序设计 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的 数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

微机原理试题及答案 (1)

学年第学期微机原理及应用(A)课程试卷 卷16 班级姓名得分任课教师 一、选择题:(每题分,共18分) 1、DMAC向CPU发出请求信号,CPU响应并交出总线控制权后将( 3)。 反复执行空操作,直到DMA操作结束 进入暂停状态, 直到DMA操作结束 进入保持状态, 直到DMA操作结束 进入等待状态, 直到DMA操作结束 2、有一个实时数据采集系统,要求10ms进行一次数据采集,然后进行数据 处理及显示输出,应采用的数据传送方式为( 3 )。 无条件传送方式查询方式 中断方式直接存储器存取方式 3、在数据传送过程中,数据由串行变并行,或由并行变串行的转换可通过 (3 )来实现。 计数器寄存器移位寄存器 D触发器 4、8088 CPU输入/输出指令可寻址外设端口的数量最大可达(4 )个。 128 256 16K 64K 5、CPU响应中断后,通过( 4)完成断点的保护。 执行开中断指令执行关中断指令 执行PUSH指令内部自动操作 6、并行接口芯片8255A具有双向数据传送功能的端口是(1 )。 PA口PB口 PC口控制口 7、8088CPU处理动作的最小时间单位是(2 )。 指令周期时钟周期机器周期总线周期8.堆栈是内存中(4 )。 先进先出的ROM区域后进先出的ROM区域 先进先出的RAM区域后进先出的RAM区域

9、计算机中广泛应用的RS-232C实质上是一种(3 )。 串行接口芯片串行通信规程(协议) 串行通信接口标准系统总线标准 5--1 10、高速缓冲存储器(CACHE)一般是由( 1 )芯片组成。 SRAM DRAM ROM EPROM 11、鼠标器是一种(3 )。 手持式的作图部件手持式的光学字符识别设备 手持式的座标定位部件手持式扫描器 12、传送速度单位“bps”的含义是( 2 )。 bytes per second bits per second baud per second billion bytes per second 二、填空题:(每空1分,共12分) 1、CPU在响应中断后,自动关中。为了能实现中断嵌套,在中断服务程序中, CPU必须在保护现场后,开放中断。 2、在计算机运行的过程中,有两股信息在流动,一股是数据,另 一股则是控制命令。 3、指令MOV BX,MASK[BP]是以 ss 作为段寄存器。 4、指令REPE CMPSB停止执行时,表示找到第一个不相等的字符 或 CX=0 。 5、设CF=0,(BX)= 7E15H,(CL)= 03H,执行指令 RCL BX,CL后, (BX) = ,(CF)=,(CL)=。0F0A9H 1 3 6、在8088 CPU中,一个总线周期是 CPU从存储器或I/O端口存取一个字 节的时间。 8253定时/计数器有 3 个独立的16位计数器,每个计数器都可按二进制或 bcd 来计数。 三、程序设计(共40分) 1.(10分)假设X和X+2单元与Y和Y+2单元中分别存放的是两个双

C语言程序设计-----阅读程序题库及答案

C语言程序设计-----阅读程序题库及答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

阅读程序题 【】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) +00 B) C) D) 0 【】下面程序的输出结果是B____。 #include <> main( ) { int x=10; { int x=20; printf ("%d,", x);

} printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20 【】以下程序的输出结果是___B_。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }s",s); } A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定

【】下面程序的输出结果是____。 main() { int a,b; scanf("%2d%3d",&a,&b); printf("a=%d b=%d\n",a,b); } A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误 【】以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 【】以下程序的输出结果是。 main() { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf("d=%d\n",d); } A) d=10 B) d=15 C) d=20 D) d=25 【】下面程序的输出结果为。 main()

微机原理试题和答案

微机原理试题 一、单项选择题(每小题1分,共20分) 1.8086CPU由两个独立的工作单元组成,它们是执行单元EU和( ). A)总线控制逻辑器B)内部通信寄存器 C)指令寄存器D)总线接口单元 2.8086系统若用256KB*1动态存储器芯片可望构成有效存储系统的最小容量是( ). A)256KB B)512KB C)640KB D)1MB 3.Intel8255A使用了()个端口地址。 A)1 B)2 C)3 D)4 4.PC机中为使工作于一般全嵌套方式的8259A中断控制器能接受下一个中断请求,在中断服务程序结束处就( ). A)发送OCW2指令B)发送OCW3指令C)执行IRET指令D)执行POP指令5.RAM是随机存储器,它分为( )两种. A)ROM和SRAM B)DRAM和SRAM C)ROM和DRAM D)ROM和CD-ROM 6.在程序运行过程中,确定下一条指令的物理地址的计算表达式是() A)CS×16+IP B)DS×16+SI C)SS×16+SP D)ES×16+DI 7.( )是以CPU为核心,加上存储器,I/O接口和系统总线构成的. A)微处理器B)微型计算机C)微型计算机系统D)计算机 8.对于掉电,8086/8088CPU是通过( )来处理的. A)软件中断B)可屏蔽中断C)非屏蔽中断D)DMA 9.计算机的存储器采用分级存储体系的主要目的是()。 A)便于读写数据B)减小机箱的体积 C)便于系统升级D)解决存储容量、价格和存取速度之间的矛盾 10.8259A的OCW1----中断屏蔽字( )设置. A)在ICW之前B)只允许一次C)可允许多次D)仅屏蔽某中断源时11.将十六进制数163.5B转换成二进制数是)( ) A)1101010101.1111001 B)110101010.11001011 C)1110101011.1101011 D)101100011.01011011 12.Intel 8086/8088微处理器有()地址线,直接寻址内存空间的范围是()。A)10条,64KB B)20条,64KB C)16条,1M D)20条,1M 13.Intel 8086/8088微处理器的标志寄存器中,作为记录指令操作结果的标志是()。 A)CF,OF,PF,AF,SF,ZF B) CF,PF,ZF,SF C) OF,DF,IF,SF,ZF,CF D) IF,DF,OF,CF 14.下述对标志寄存器中标志位不产生影响的指令是()。 A)JMP NEXT B) TEST AL,80H C) SHL AL,1 D) INC SI 15.简单的汇编语言程序可以通过()来建立、修改和执行。 A)连接程序B) 调试程序C) 汇编程序D) 编辑程序 16.累加器AL中的内容是74H,执行CMP AL,47H指令后,累加器AL中的内容是()A)2DH B)0D3H C)00H D)74H 17.LINK程序执行后可以生成一个以()为扩展名的文件。 A).COM B).EXE C).OBJ D).LST 18.在8086/8088汇编语言源程序中,两个有符号的整数A和B比较后为了判断A是否大

C++程序设计综合练习题-读程序写结果题

C++程序设计模拟题 三、用C++语言描述下列命题 1、A小于B并且A大于C 2、A和B中有—个小于C 3、A是奇数 4、B和C中较大者与A相等 5、年份Y是闰年 四、写出下列程序的执行结果 1. #include void main() { int b[3][5]={11,12,13,14,15,21,22,23,24,25,31,32,33,34,35}; int (*p)[5]; p=b; for(int j=0;j<5;j++) cout<<*(*p+j)<< "," ; cout< void swapl(int a,int b) { int temp=a; a=b; b=temp; } void swap2(int*a,int*b) { int temp=*a; *a=*b,*b=temp; } void swap3(int*a,int*b) { int*temp=a; a=b,b=temp; } void swap4(int &a,int &b)

int temp=a; a=b; b=temp; } void main() { int a=10,b=20; swapl(a,b); cout< void print(int w) { int i; if(w!=0) { print(w-1); for(i=1;i<=w;i++) cout< #define sw(x,y) {x^=y;y^=x;x^=y;} void main() { int a=10,b=01; sw(a,b); cout<

微机原理实验五输入与输出程序设计

实验六输入与输出程序设计 一、实验目的 1?掌握常用DOS中断调用的功能以及在应用程序中的使用方法。 2?学习键盘输入和屏幕输出的基本方法。 3?宏指令、子程序在应用程序屮的使用。 4?汇编语言程序设计的调试与完善。 二、设计指标与实验要求 1.设计内容 本实验要求设计完成:①屏幕输出提示(如〃Want in put (Y/N)? ”),若键入N则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。②换行后输出提示(如"please in put a strings :”),且在该提示后键入一字符串(输入到输入缓冲区) ③换行后输出提不(如"your in putt ing is :”),在该提不后输出由②步输入的字符串。 ④换行后输出提示“Want continue (Y/N)? ” ,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。 2 ?设计要求 ①按屏幕提示要求输入,从屏幕上获得正确结果。 ②把程序屮常用的屮断调用定义成宏指令(至少定义2个)。 ③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应能显示由 主程序指定的任一字符串。要注意这两种方法实现的设计过程是不同的。 采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用 9号功能的,子程序输入参数为“回显字符串地址”。 ④屏幕的提示信息显示格式尽量做到兼顾美观。

3 .实验步骤 ①?选用合适的程序文本编辑软件编辑源程序, 并为文件取以.ASM为扩展名的文件存盘。 ②?用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。 ③?用LINK对由MASM匚编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。 ④?对存在问题的程序,用CV调试程序,检察运行结果,并调试程序。 ⑤?反复验正程序的正确性。 ⑥?完善、改进所设计的程序算法、功能、界面、或性能等指标。 四、思考题 1.输入串若以指定字符(非回车)做结束标志时的输入部分应如何改写。 2.若为应用程序添加启动时的密码检验功能,密码输入时采用什么屮断功能比较合适? 3.如何为应用程序添加字母的大小写转换功能? OUTPUT MACRO MOV AH, 9 INT 21H EXDM INPUTS MACRO MOV AH, 10 INT 21H ENDM DATA SEGMENT BUF1 DB Odh, Oah,,Wa nt in put(Y/N)?$, BUF2 DB Odh,Oah, 5 please in put a stri ngs:$' BUFIN DB 20,?,20 DUP(?) BUF3 DB Odh,Oah, ' your in putt ing is:$' BUF4 DB Odh, Oah,,Wa nt contin ue(Y/N)?$,

微机原理与接口技术 试题与答案

微机原理与接口技术试题 微型计算机原理与接口技术综合测试题一 一、单项选择题(下面题只有一个答案是正确的,选择正确答案填入空白处) 1.8086CPU通过(1 )控制线来区分是存储器访问,还是I/O 访问,当CPU执行IN AL,DX指令时,该信号线为(2 )电平。 (1) A. M/ B. C. ALE D. N/ (2) A. 高 B. 低 C. ECL D. CMOS 2.n+1位有符号数x的补码表示范围为()。 A. -2n < x < 2n B. -2n ≤ x ≤ 2n -1 C. -2n -1 ≤ x ≤ 2n-1 D. -2n < x ≤ 2n 3.若要使寄存器AL中的高4位不变,低4位为0,所用指令为()。 A. AND AL, 0FH B. AND AL, 0FOH C. OR AL, 0FH D. OR AL 0FOH 4.下列MOV指令中,不正确的指令是()。 A. MOV AX, BX B. MOV AX, [BX] C. MOV AX, CX D. MOV AX, [CX] 5.中断指令INT 17H的中断服务程序的入口地址放在中断向量表地址()开始的4个存贮单元内。

A. 00017H B. 00068H C. 0005CH D. 0005EH 6.条件转移指令JNE的条件是()。 A. CF=0 B. CF=1 C. ZF=0 D. ZF=1 7. 在8086/8088 CPU中,一个最基本的总线读写周期由(1 )时钟周期(T状态)组成,在T1状态,CPU往总线上发( 2 )信息。 ⑴ A. 1个 B. 2个 C. 4个 D. 6个 ⑵ A. 数据 B . 地址 C. 状态 D. 其它 8. 8086有两种工作模式, 最小模式的特点是(1 ),最大模式的特点是( 2 )。 ⑴ A. CPU提供全部控制信号 B. 由编程进行模式设定 C. 不需要8286收发器 D. 需要总线控制器8288 ⑵ A. M/ 引脚可直接引用 B. 由编程进行模式设定 C. 需要总线控制器8288 D. 适用于单一处理机系统 9.在8086微机系统的RAM 存储单元器0000H:002CH开始依次存放23H,0FFH,00H,和0F0H四个字节,该向量对应的中断号是( )。 A. 0AH B. 0BH C. 0CH D. 0DH 10.真值超出机器数表示范围称为溢出,,此时标志寄存器中的( )位被置位 A. OF B AF C PF D CF

微机原理试题及答案

微机原理试题及答案 Revised as of 23 November 2020

学年第学期微机原理及应用(A)课程试卷 卷16 班级姓名得分任课教师 一、选择题:(每题分,共18分) 1、DMAC向CPU发出请求信号,CPU响应并交出总线控制权后将( )。 反复执行空操作,直到DMA操作结束 进入暂停状态, 直到DMA操作结束 进入保持状态, 直到DMA操作结束 进入等待状态, 直到DMA操作结束 2、有一个实时数据采集系统,要求10ms进行一次数据采集,然后进行数据处理及显示输出,应 采用的数据传送方式为()。 无条件传送方式查询方式 中断方式直接存储器存取方式 3、在数据传送过程中,数据由串行变并行,或由并行变串行的转换可通过()来实现。 计数器寄存器移位寄存器 D触发器 4、8088 CPU输入/输出指令可寻址外设端口的数量最大可达()个。 128 256 16K 64K 5、CPU响应中断后,通过()完成断点的保护。 执行开中断指令执行关中断指令 执行PUSH指令内部自动操作 6、并行接口芯片8255A具有双向数据传送功能的端口是()。 PA口 PB口 PC口控制口 7、8088CPU处理动作的最小时间单位是()。 指令周期时钟周期机器周期总线周期

8.堆栈是内存中()。 先进先出的ROM区域后进先出的ROM区域 先进先出的RAM区域后进先出的RAM区域 9、计算机中广泛应用的RS-232C实质上是一种()。 串行接口芯片串行通信规程(协议) 串行通信接口标准系统总线标准 5--1 10、高速缓冲存储器(CACHE)一般是由()芯片组成。 SRAM DRAM ROM EPROM 11、鼠标器是一种()。 手持式的作图部件手持式的光学字符识别设备 手持式的座标定位部件手持式扫描器 12、传送速度单位“bps”的含义是()。 b ytes per second bits per second baud per second billion bytes per second 二、填空题:(每空1分,共12分) 1、CPU在响应中断后,自动关中。为了能实现中断嵌套,在中断服务程序中,CPU必须在 后,开放中断。 2、在计算机运行的过程中,有两股信息在流动,一股是,另一股则是。 3、指令MOV BX,MASK[BP]是以作为段寄存器。 4、指令REPE CMPSB停止执行时,表示找到或。 5、设CF=0,(BX)= 7E15H,(CL)= 03H,执行指令 RCL BX,CL后, (BX)= , (CF)=,(CL)=。 6、在8088 CPU中,一个总线周期是。 7、8253定时/计数器有个独立的16位计数器,每个计数器都可按二进制或 来计数。 三、程序设计(共40分)

相关文档