青岛大学2013期末考试汇编试题整理
更新时间:2023-12-03 05:14:01 阅读量: 教育文库 文档下载
青岛大学2012—2013 IBM-PC汇编语言程序设计期末试题 一、单项选择题(10分) 十个题,每题一分
二、填空题(12分)
八个题,十二个空,每空一分 三、程序填空题(20分) 四个题,十个空,一个空2分
1、 字符串挪动的问题,从一个地址移动到另一个地址 2、 找偶数的(貌似就是课本上的那个,第五章习题) 3、 在字符串中查找某个字符并用另一个字符代替 4、 关于宏的问题 四、程序分析题(20分) 四个题,每题五分 1、 做过的练习题
2、 两个数比较的问题
3、 第四章存储单元的分配dw,db,$,EQU 4、 在一个字符串中查找某个字符的问题 五、程序设计题(38分)
四个题,第一题八分,第二三四题每个十分 1、 在内存空间里的数用其他字符代替 2、 字符串比较的题目
3、 数组的运算,包括加减乘除 4、 课后练习题
三、程序填空题
1.1试编制宏定义,要求把存储器中的一个用EOT(ASCII码04H)字符结尾的字符串传送到另一个存储区去。
答:宏定义如下:
SEND
MACRO SCHARS, DCHARS LOCAL NEXT, EXIT PUSH PUSH MOV MOV MOV CMP JZ INC JMP
EXIT:
POP POP ENDM
2、试编写一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。
答:程序段如下:
BEGIN:
MOV MOV
COMPARE: MOV
BX, 0 CX, 100 AX, DATA[BX] AX SI SI, 0
AL, SCHARS[SI]
DCHARS[SI], AL AL, 04H ;;是EOT字符吗? EXIT SI NEXT SI AX
NEXT:
;取数组的第一个偶数 ;是偶数吗?
;不是,比较下一个数 ;没有偶数,退出
;最后一个数是偶数,即为最小偶数,退
;取数组的下一个偶数
ADD BX, 2 TEST AX, 01H LOOPNZ COMPARE JNZ STOP JCXZ 出
COMPARE1:
ADD TEST JNZ CMP JLE MOV
NEXT: STOP:
LOOP RET
STOP
MOV DX, DATA[BX]
BX, 2 DX, 01H NEXT AX, DX NEXT AX, DX COMPARE1
;是偶数吗?
;不是,比较下一个数 ;(AX)<(DX)吗?
;(AX)<(DX),则置换(AX)为最小偶数
3、 编写程序段,把字符串STRING中的‘&’字符用空格符代替。
STRING DB ‘The date is FEB&03’
答:程序段如下:
MOV MOV CLD MOV MOV LEA
CX, 18 AL, ‘&’
DI, SEG STRING ES, DI DI, STRING
REPNE SCASB JNE NEXT DEC MOV NEXT:
DI
ES:BYTE PTR [DI], ‘ ’ ┇
;送空格符
4、试编写宏定义SUMMING,要求求出双字数组中所有元素之和,并把结果保存下来。该宏定义的哑元应为数组首址ARRAY,数组长度COUNT和结果存放单元RESULT。
答:宏定义如下:
SUMMING
MACRO ARRAY,COUNT,RESULT LOCAL ADDITION
MOV MOV
ADDITION: MOV
ADD ADC
ESI, 0
ECX, COUNT
EAX, ARRAY[ESI*4] ;;双字为4字节 RESULT, EAX RESULT+4, 0
;;将进位加到结果的高位双字中
INC ESI
LOOP ADDITION ENDM
四、程序分析题
1.1(这个极有可能考)、假设X和X+2单元的内容为双精度数p,Y和Y+2单元的内容为双精度数q,(X和Y为低位字)试说明下列程序段做什么工作?
MOV DX, X+2 MOV AX, X ADD AX, X ADC DX, X+2 CMP JL JG CMP
DX, Y+2 L2 L1 AX, Y
JBE L2
L1: MOV AX, 1
JMP SHORT EXIT
L2: M发OV AX, 2 EXIT:INT 20H
答:此程序段判断p*2>q,则使(AX)=1后退出;p*2≤q,则使(AX)=2后退出。
1.2、试分析下面的程序段完成什么功能?
MOV SHL MOV SHL SHR
CL, 04 DX, CL BL, AH AX, CL BL, CL
OR DL, BL
答:本程序段将 ((DX),(AX)) 的双字同时左移4位,即将此双字乘以10H (16)。 1.3、试分析下列程序段:
ADD AX, BX
JNO JNC SUB JNC JNO
L1 L2 AX, BX L3 L4
JMP SHORT L5
如果AX和BX的内容给定如下: AX BX
(1) 147BH 80DCH (2) B568H (3) 42C8H
42C8H 608DH
(4) D023H 9FD0H (5) 94B7H B568H
问该程序分别在上面5种情况下执行后,程序转向哪里? 答:(1) 转向L1
(2) 转向L1
(3) 转向L2 (4) 转向L5 (5) 转向L5
;因为加法指令后AX中已经是6FF3H ;因为加法指令后AX中已经是4A14H
3.1假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP (?) COUNT DD ? PLENTH EQU $-PARTNO
问PLENTH的值为多少?它表示什么意义?
答:PLENTH=22=16H,它表示变量PARTNO、PNAME、COUNT总共占用的存储单元
数(字节数)。 4.1设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN:xxxx”显示出次数。
答:程序如下:
DSEG ENG DISP
SEGMENT
DB ‘Here is sun, sun ,?,$’ DB ‘SUN:’
DAT DB ‘0000’ , 0DH, 0AH, ‘$’
KEYWORD DB ‘sun’ DSEG ENDS
;-------------------------------------------------------------------------- CSEG
SEGMENT PROC
FAR
ASSUME CS: CSEG, DS: DSEG, ES: DSEG PUSH DS ;设置返回DOS SUB AX, AX PUSH MOV MOV MOV
BEGIN:
MOV MOV LEA
COMP:
MOV LEA MOV REPE JNZ INC
ADD
NOMATCH: INC
DEC
DONE:
JNZ
MOV MOV LEA
DONE1:
ROL MOV AND ADD CMP JLE ADD
STORE:
AX AX, DSEG DS, AX ES, AX
;给DS赋值 ;给ES赋值
MAIN START:
AX, 0
DX, DISP-ENG-2 ;计算ENG的长度(每次比较sun,因此比
BX, ENG
较次数-2)
DI, BX SI, KEYWORD CX, 3 CMPSB
;串比较
;是,SUN的个数加1 ;指向ENG的下一个字母
NOMATCH AX BX, 2 BX
DX
COMP CH, 4
;将次数转换为16进制数的ASCII码
;转换结果存入DAT单元中
CL, 4
BX, DAT AX, CL DX, AX DL, 0FH DL, 30H DL, 39H STORE DL, 07H
;取一位16进制数
;是“A~F”所以要加7
;转换结果存入DAT单元中
MOV [BX], DL
INC BX DEC
CH
DONE1
DX, DISP AH, 09H
JNZ
DISPLAY: LEA 显示)
MOV
;显示字符串程序(将DISP和DAT一起
INT 21H
RET
MAIN ENDP CSEG ENDS ;以上定义代码段 ;--------------------------------------------------------------------------
END
START
4.2从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。
答:程序段如下:
DSEG
SEGMENT DB 50 DUP (‘ ’) DW 0 ENDS ┇ LEA MOV MOV INT MOV INC CMP JNZ LEA
NEXT:
MOV INC CMP JZ CMP JB CMP JA INC
DISP:
JMP
BX, BUFF COUNT, 0
AH, 01 21H
[BX], AL BX
AL, ‘$’
;是$结束符吗?
;不是,继续输入 ;对非数字字符进行计数
;从键盘输入一个字符的功能调用
BUFF
COUNT DSEG
BEGIN: INPUT:
INPUT BX, BUFF CL, [BX] BX
CL, ‘$’ DISP CL, 30H NEXT CL, 39H NEXT COUNT NEXT ┇
;是$结束符,则转去显示 ;小于0是非数字字符 ;大于9是非数字字符 ;个数+1
;16进制数显示程序段(省略)
4.3现有一个以$结尾的字符串,要求剔除其中的空格
.data
db ’Let us have a try !’,’$’ .code .startup
mov si,offset string cmp byte ptr [si],’$’
string
outlp:
;外循环,先判断后循环
jz done
;为$结束
;检测是否是空格
cmp byte ptr [si],’ ’
jnz next ;不是空格继续循环
mov di,si ;是空格,进入剔除空格分支
;该分支是循环程序段
inlp: inc di
mov al,[di] mov [di-1],al cmp byte ptr [di],’$’
;前移一个位置
;内循环,先循环后判断
jnz inlp jmp outlp inc si
;继续对后续字符进行处理
next:
jmp outlp .exit 0
;结束
done:
五、程序设计题
1.1、编写程序段,把字符串STRING中的‘&’字符用空格符代替。
STRING DB ‘The date is FEB&03’ 答:程序段如下:
MOV MOV CLD MOV MOV
CX, 18 AL, ‘&’
DI, SEG STRING ES, DI
LEA DI, STRING REPNE SCASB JNE DEC MOV NEXT:
2.1、试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’, 若不相同则显示‘NO MATCH’。
答:程序如下:
DSEG
SEGMENT
DB ‘I am a student.’
STRING1
NEXT
DI
ES:BYTE PTR [DI], ‘ ’ ┇
;送空格符
STRING2 DB ‘I am a student!’
YES DB ‘MATCH’, 0DH, 0AH, ‘$’ NO DB ‘NO MATCH’, 0DH, 0AH, ‘$’ DSEG ENDS
;-------------------------------------------------------------------------- CSEG
SEGMENT PROC
FAR
ASSUME CS: CSEG, DS: DSEG, ES: DSEG PUSH DS ;设置返回DOS SUB PUSH MOV MOV MOV
;
BEGIN:
LEA LEA CLD MOV REPE JNE LEA
JMP
DISPNO: LEA DISPLAY: MOV
INT RET
AX, AX AX
AX, DSEG DS, AX ES, AX
MAIN START:
;给DS赋值 ;给ES赋值
;设置串比较指令的初值
SI, STRING1
DI, STRING2
CX, STRING2 - STRING1 CMPSB ;串比较 DISPNO DX, YES DISPLAY DX, NO AH, 9 21H
;显示MATCH
;显示NO MATCH
;显示一个字符串的DOS调用
MAIN ENDP CSEG ENDS ;以上定义代码段 ;--------------------------------------------------------------------------
END
STAR
2.2编写一程序段:比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串则执行NEW_LESS;否则顺序执行程序。
答:程序段如下:
MOV CLD MOV MOV MOV LEA LEA REPE JNE
CX, 5
DI, SEG OLDS DS, DI ES, DI SI, OLDS DI, NEWS CMPSB NEW_LESS
┇
NEW_LESS: ┇
3.1把0~100D之间的30个数存入以GRADE为首地址的30字数组中,GRADE+i表示学号为i+1的学生的成绩。另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写一程序,根据GRADE中的学生成绩,将学生名次填入RANK数组中。(提示:一个学生的名次等于成绩高于这个学生的人数加1。)
答:程序如下:
DSEG GRADE
SEGMENT DW 30 DUP (?)
;假设已预先存好30名学生的成绩
RANK DW 30 DUP (?)
DSEG ENDS
;-------------------------------------------------------------------------- CSEG
SEGMENT
PROC FAR
ASSUME CS: CSEG, DS: DSEG PUSH DS ;设置返回DOS SUB PUSH MOV MOV
BEGIN: LOOP1:
MOV MOV PUSH MOV MOV MOV MOV CMP JBE INC
GO_ON:
DI, 0 CX, 30 CX
CX, 30
;外循环计数器 ;内循环计数器
AX, AX AX AX, DSEG DS, AX
;给DS赋值
MAIN START:
LOOP2:
SI, 0
AX, GRADE [DI] DX, 1 ;起始名次为第1名 GRADE [SI], AX ;成绩比较 GO_ON DX
;名次+1
ADD SI, 2
LOOP LOOP2 POP MOV ADD
CX
RNAK [DI], DX ;名次存入RANK数组 DI, 2
LOOP LOOP1 RET
MAIN CSEG
ENDP ENDS END
3.1实现数组运算
数组X(X1,…,X10)和数组Y(Y1,…,Y10),计算
;以上定义代码段
;--------------------------------------------------------------------------
START
Z1=X1+Y1 Z2=X2+Y2
Z5=X5-Y5 Z6=X6+Y6
Z8=X8 -Y8 Z9=X9+Y9 Z10=X10+Y10
Z3=X3-Y3 Z4=X4-Y4
Z7=X7-Y7
结果存入Z数组。
;设置标志位:0做加法;1做减法
;逻辑尺:存放10各标志位,在LOGIC_RULE存储单元中
0000 00 00 1101 1100
最高的6位无意义,从低位开始所设的标志位指示每次要做的操作顺序。 .model small
.stack .data x y z
dw x1 , x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ,x10 dw y1 , y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,y9 ,y10 dw z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,z9 ,z10
dw 00dch
logic_rule .code .startup
mov bx , 0 mov cx , 10 mov dx , logic_rule
Next:
mov ax , x[bx]
shr dx , 1 jc subtract add ax , y[bx] jmp short result
Substract:
sub ax , y[bx]
Result:
mov z[bx] , ax add bx ,2
正在阅读:
青岛大学2013期末考试汇编试题整理12-03
对加强工商行政管理干部队伍建设12-19
个人理财规划研究01-12
珠海市田家炳中学高一级广播体操比赛规程05-26
人大经济法模拟试题二05-14
如何彻底杀毒06-07
福建省厦门市湖滨中学2018届高三下学期高考适应性考试文科综合地04-06
国外出差管理办法06-05
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 青岛大学
- 汇编
- 期末
- 试题
- 整理
- 考试
- 2013
- 正截面承载力计算
- 英语口语考试模板
- 杭州市卫生局关于印发杭州市落实扩大国家免疫规划项目管理方案
- 沪教版化学九年级上册1.3《中学化学实验基本操作》例题解析
- 兴安得力
- 4. 施工现场扣件式钢管脚手架安全技术规范JGJ130-2011-题库
- sap ME51N,ME21N屏幕增强
- 高中化学教学工作总结
- 硫酸使用说明及注意事项
- 鬼谷子
- 初中科学知识点《生命活动的调节》《激素对生命活动调节的作用》精品专题课后练习含答案考点及解析
- 《卓越现场4P管理体系》答案
- 20160220-房地产和建筑行业应对“营改增”的策略总结-铂略 - 图文
- 人美版一年级上册美术教案卡通明星总动员2教学设计
- 市商务局工作总结 2019常德市商务局市场运行科年终总结 精品
- 中级工理论试题
- 20XX年新农村建设指导员派出单位工作总结
- 人教版高中化学选修3第2章第2节分子的立体构型第2精编课时作业
- 部分姓氏源流
- 南开16秋学期《经济学原理(一)》在线作业