当前位置:文档之家› 汇编大作业

汇编大作业

汇编大作业
汇编大作业

汇编语言课程设计

课题名称:学生成绩管理系统

小组成员:

班级:

指导教师:

日期:2014.06.18 一、选题目的:

熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和

调试等基本操作。利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。

二、功能设计:

编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。

三、算法流程图:

四、运行结果:

从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果

五、程序源代码:

data segment

infor0 db 0ah,0dh,'sort=$'

infor1 db 0ah,0dh,'input name:$'

infor2 db 0ah,0dh,'input score:$'

n equ 8 姓名长度

m equ 4 成绩长度(3位+回车符)

p equ 3 输入的人数

q equ 3 成绩的位数

buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区

sname db p dup(n+1 dup(0)) 保存姓名

score1 dw p dup(m+1 dup(0)) 保存成绩

score2 dw p dup(m+1 dup(0))

mingci db p dup(0) 名次

x dw ?

sign1 dw 0

sign2 dw 0

cont db '1' 计数

data ends

code segment

assume cs:code, ds:data

main proc far

start:

mov ax,data

mov ds,ax

mov es,ax

mov bx,0

mov cx,0

call input

call sort

call print

mov ah,4ch

int 21h

main endp

input proc

inc bx 输入次数统计

cmp bx,p 输入次数>p?

ja exit

lea dx,infor1 显示提示2

mov ah,9

int 21h

lea dx,buff1 输入姓名

mov ah,10

int 21h

mov al,buff1+1 实际输入个数——a1

add al,2 +2.包含bufferl的0、1号单元

mov ah,0

mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示

lea dx,infor2 显示提示2

mov ah,9

int 21h

lea dx,buff2 输入成绩

mov ah,10

int 21h

mov al,buff2+1 实际输入个数

add al,2 个数+2,包含0、1单元,为找到0d

mov ah,0

mov si,ax

mov buff2[si],0 将0d换为0,便于输出显示

mov mingci[bx-1],bl bx为输入次数,保存输入的次序

cmp bx,1 第一次输入转let1

jz let1

add sign1,n+1 姓名间隔为n+1

add sign2,q 成绩间隔为q

let1: 子程序嵌套

call copy

jmp input

exit:

ret

input endp

copy proc

mov cx,n+1 姓名长度+3(包含$)

lea si,buff1+2

lea di,sname 姓名传递到sname

add di,sign1 加上间隔值

cld

rep movsb

mov cx,n

mov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2

lea di,score1 成绩传递到score1

add di,sign2 加上间隔符

cld

rep movsb

lea si,buff2+2

mov di,sign2

call change 二进制成绩score2

ret

copy endp

change proc

mov x,0

mov cx,[si-1] 成绩的位数cx

mov cx,000fh 保留低四位

rept2:

mov al,[si] 按位取出成绩

cmp al,30h 是否在0、9之间

jl exit1

cmp al,39h

jg exit1

and ax,000fh

xchg ax,x

mov dx,10 将ax中前一次形成的书扩大十倍

mul dx 保存到x

add x,ax

inc si

loop rept2

mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2

mov x,0

add sign2,2 下一个成绩单元

exit1:ret

change endp

sort proc

mov cx,p 数组长度

dec cx

loop1:push cx 保存外循环次数

mov bx,0

mov si,0

loop2: mov ax,score2[bx]

cmp ax,score2[bx+m+1] m+1=5

jge next 降序

xchg ax,score2[bx+m+1] 交换成绩

mov score2[bx],ax

mov al,mingci[si]

xchg al,mingci[si+1] 交换名次

mov mingci[si],al

next:add bx,m+1

inc si 下一个成绩

loop loop2

pop cx 恢复外循环次数

loop loop1

ret

sort endp

print proc

lea dx,infor0 显示结果提示

mov ah,9

int 21h

mov cx,p

mov bx,0

mov ax,0

mov di,0

rept3:

mov dl,0ah 回车换行

mov ah,2

int 21h

mov dl,0dh

int 21h

mov dl,cont 显示名次序号

mov ah,2

int 21h

inc cont

mov dl,0ah 回车换行

mov ah,2

int 21h

mov dl,0dh

int 21h

mov ax,0

mov al,mingci[di] 取名次

dec al 位置-1,因为地址从0开始 mov bl,9

mul bl

lea dx,sname

add dx,ax 偏移地址+姓名位移量

mov ah,9 显示姓名

int 21h

mov dl,0ah 回车换行

mov ah,2

int 21h

mov dl,0dh

int 21h

mov ax,0

mov bx,0

mov al,mingci[di] 取名次

dec al 地址从0开始

mov bl,5

mul bl

lea dx,score1

add dx,ax

mov ah,9 显示成绩

int 21h

inc di

loop rept3

ret

print endp

code ends

end start

六、自我评价:

本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。此程序包含了主程序和五个子程序。用变量p控制输入的人数,姓名和成绩输入分别用DOS中断调用的10号功能实现字串输入,用buffer1和buffer2作为键入的姓名和成绩的缓存区,然后将所有人名和成绩用串传送指令转存到sname和score1中保存。程序中将score1中成绩的十进制数ASCII码转换为二进制数score2,在本程序中更加全面的了解了汇编。

七、参考来源:

1、IBM-PC汇编语言程序设计(第二版)

2、80x86汇编语言程序设计

汇编语言大作业

辽宁师范大学计算机与信息技术学院综合性实验报告 课程名称:汇编语言 实验题目:菜单程序设计 学生姓名:孙蕾 专业:计算机科学与技术 学号:20101118050005 实验日期: 2012.5.10 实验成绩:

一、实验目的 设计菜单程序,实现各种功能,设计分支程序,重键盘输入字符。二、实验内容 (1)参考示例5-8设计菜单程序,包含示例5-2、示例5-3及退出三个菜单项。将示例5-2改为从键盘输入X;示例5-3增加显示功能,显示出统计个数。(P120、P101、P106) (2)选作:参考P213第9章示例9-3,在屏幕上清屏、开窗口,将菜单程序带颜色地显示在窗口中。提示:可利用P223宏库9-4.mac中的功能。 三、实验过程(含结果抓图) 1.输入程序代码 data segment x dw ? y dw ? cc db 0ah,0dh,'Y=$' mess0 db 0ah,0dh,0dh,'****************MENU******************' db 0ah,0dh, '*1. calculate Y=5X-18: *' db 0ah,0dh, '*2. count the numbers of a string: *' db 0ah,0dh, '*3. exit *' db 0ah,0dh, '*^^ please select... *' db 0ah,0dh, '**************************************' db 0ah,0dh,' $' mess1 db 0ah,0dh,0dh,'please input a string :$' c db 0ah,0dh,0dh,'please input a number :$' mess2 db 0ah,0dh,'numb:$' mess3 db 0ah,0dh,'capi:$' mess4 db 0ah,0dh,'lett:$' mess5 db 0ah,0dh,0dh,'thank you for using!!$' numb db 10 dup(?) capi db 10 dup(?) lett db 10 dup(?) data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax let0:mov dx,offset mess0 mov ah,9 int 21h

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH;偏移地址=bx=0100h (4)AX=3412H;偏移地址=bx=0100h (5)AX=4C2AH;偏移地址=bx+1100h=1200h (6)AX=7856H;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov[sp],ax (7)mov ax,bx+di

(8)mov20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[SI] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop[bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx;bx=0f79h pop[bx];DS:[0f79h]=8057h

《汇编语言》在线作业二

请同学及时保存作业,如您在20分钟内不作操作,系统将自动退出。 《汇编语言》在线作业二 一、单选题(共 20 道试题,共 100 分。) V 1. 在多重循环程序中,每次通过外层循环进入内层循环时,其内层循环的初始条件(B )。 A. 不必考虑 B. 必须重新设置 C. 必须置1 D. 须清0 满分:5 分 2. 伪指令是(C)规定的汇编说明符,它在源程序汇编时进行说明。 A. DEBUG B. LINK C. MASM D. EDIT 满分:5 分 3. 下列描述正确的是(D)。 A. 在多重循环程序中,内层循环只能有一个 B. 在汇编语言程序设计中,二重循环程序之间的关系可以交错 C. 在汇编语言程序设计中,每次循环应返回到置初值部分之前 D. 在汇编语言程序设计中,每次循环应返回到置初值部分之后 满分:5 分 4. 下列指令会影响标志位的指令是(D)。 A. JMP L

B. JC L C. MOV AL,L D. SHL AL,1 满分:5 分 5. LINK命令执行后可以生成一个以(B)为扩展名的文件。 A. ASM B. EXE C. OBJ D. COM 满分:5 分 6. 如果0100H单元存放条件转移指令的操作码,0101H单元存放条件转移指令的相对位移量 13H,那么转移后的指令的偏移地址为(C)。 A. 0102H B. 0113H C. 0115H D. 00FEH 满分:5 分 7. 若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行“ADD AX,[BX]”指令后,AX=(A)。 A. 8856H B. 6678H C. 8800H D. 6600H 满分:5 分 8. 下列叙述正确的是(A )。 A. 执行一条段间调用指令,先将CS、IP的内容压栈,然后将目的地址送CS和IP。 B. 执行一条段间调用指令,先将目的地址送CS和IP,然后将CS、IP的内容压栈。

汇编语言习题

汇编语言习题 一、单项选择题 1. 汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( )。 A、名字项 B、操作项 C、操作数项 D、注释项 2. 在汇编语言程序中,对END语句的叙述正确的是()。 A、是一可执行语句 B、表示程序执行到此结束 C、表示源程序到此结束 D、在汇编后要产生机器码 3. 汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是() A、Variable B、First & ld C、0FFFFH D、'Memphis' 4.用一条指令仅实现将BX+SI=>AX的方法是() A、XCHG AX,[BX][SI] B、MOV AX,[BX+SI] C、LEA AX,BX[SI] D、LEA AX,[BX][SI] 5.设 SP初值为2000H,执行指令"PUSH AX"后,SP的值是() A、1FFFH B、1998H C、2002H D、1FFEH 6.条件转移指令JC产生程序转移的条件是() A、CF=1 B、CF=0 C、CF=1和ZF=1 D、CF=1和ZF=0 7.选用串操作指令时,错误的操作是() A、置方向标志位 B、根据串操作指令设置重复次数并送入CX C、设置源操作数及目的操作数指针 D、源操作数和目的操作数都可以加段超越 8.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB AL,[SI]后,正确的结果是() A、AL=5FH SF=1 CF=1 B、AL=60H SF=1 CF=0 C、AL=5FH SF=0 CF=1 D、AL=60H SF=0 CF=0 9.设AX=1000H,执行NOT AX指令后,正确的结果是() A、AX=1001H B、AX=0EFFH C、AX=1000H D、AX=0111H 10. 设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是( ) A、85B92H B、86192H C、BB690H D、12169H 11. 可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是() A、AX,BX,CX,DX B、DS,ES,CS,SS C、SP,BP,IP,BX D、SI,DI,BP,BX 12. 循环指令LOOPNZ终止循环的条件是( )。 A、CX=0,且ZF=0 B、CX=0,或ZF=1 C、CX10,且ZF=0 D、CX10,或ZF=1 13. 设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 A、 AH=01,AL=05 B、 AH=1 AL=15 C、 AH=0 AL=0FH D、 AH=0 AL=05 14. 下面的数据传送指令中,错误的操作是()。 A、 MOV SS:[BX+DI],1000H B、 MOV DX,1000H C、 MOV WORD PTR[BX],1000H D、 MOV DS,2000H 15.DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH ┇ SHL DA1,1 SHR DA2,1

dsp大作业

一、简答题:(要求:手写,须写出各题必要的知识点,本大题共30分,每小题5分。) 1、可编程DSP芯片有那九大特点? 2、TMS320C54x芯片的流水线操作共有多少个操作阶段,每个阶段执行什么任务,完成一条指令需要那些操作周期? 3、DSP系统硬件设计过程都有那些步骤?

4、TMS320C54x的数据寻址方式各有什么特点,应该应用在什么场合场所? 5、链接器能完成什么工作?链接器命令文件中,MEMORY命令和SECTION命令的任务是什么? 6、什么是“自举”? 二、分析题:(要求:手写,结果需要有一定的分析计算过程,本大题共55分,每小题5分。)

1、已知:(80H)= 20H,(81H)= 30H。 LD #0, DP LD 80H, 16,B ADD 81H, B 运行以上程序后,DP、B分别等于多少? 2、回答标准串行口数据的发送和接收过程。 3、已知:A = FFFD876624, T = 0000,则运行EXP A指令后,A和T各为多少? 4、已知:B = 420D0D0D0D, T = FFF9,则运行NORM B指令后,B和T各为多少? 5、在不含循环的程序中,RPTZ #9语句和其前一句、后一句以及后第二句各运行几次? 6、说明语句: STM #0080H, IMR的功能?

7、已知中断向量TINT = 014H,中断向量地址指针IPTR = 0111H,求中断向量地址是多少? 8、已知(30H)=50H,AR2=40H,AR3=60H,AR4=80H MVKD 30H, *AR2 MVDD *AR2, *AR3 MVDM *AR3, *AR4 运行以上程序后,(30H),(40H)、*AR3,AR4的值分别是多少? 9、在堆栈操作中,PC当前地址为4020h,SP当前地址为0013h,运行PSHM AR7后,PC和SP的值分别是多少? 10、请仔细分析下列程序代码,并说明每句程序代码的作用。 sample.out -m sample.map -stack 100 sample.obj meminit.obj -l rts.lib MEMORY { PAGE 0: VECT: origin = 0xff80, length 0x80 PAGE 0: PROG: origin = 0x2000, length 0x400 PAGE 1: DATA: origin = 0x800, length 0x400 } SECTIONS {

单片机补充作业

5-40 以中断方式,用汇编语言编写定时器T0方式0,1,2下,定时1ms 的程序。设系统focs = 12MHz 。 解1:方式0 确定装入T0的常数。机器周期为: 设所需初值为x ,则 =1C18H = 1 1100 0001 1000B 根据13位定时器的特性,TH0放x 的高8位,TL0放低5位,我们将x 值重排如下:x = 1110 0000 1 1000,即得本任务的时间常数为:TH0 = E0H ,TL0 = 18H 。 ORG 0000H AJMP MAIN ORG 000BH LJMP TIME0INT ORG 0050H MAIN : MOV SP ,#60H MOV TMOD ,#00H MOV TL0,#18H MOV TH0,#0E0H SETB ET0 ;允许T0中断 SETB EA ;开放总中断 SETB TR0 ;启动T1定时 SJMP $ TIME0INT : CLR T R0 ;禁止T0 CLR E T0 RETI ;中断返回 END ORG 0000H AJMP MAIN ORG 000BH LJMP TIME0INT ORG 0050H MAIN : MOV SP ,#60H MOV TMOD ,#01H MOV TL0,#18H MOV TH0,#0F0H SETB ET0 ;允许T0中断 SETB EA ;开放总中断 SETB TR0 ;启动T1定时 SJMP $ TIME0INT : CLR TR0 ;禁止T0 CLR ET0 s MHz μ 112)(12=分频3 613101101)2(--?=??-x 7192102313=-=x

汇编语言程序设计期末大作业。

汇编语言程序设计期末大作业: 编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号: 8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整 数)后, (1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中; (2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序; (3)输出总分高于班平均总分的全部学生记录。 要求:元月4日前提交一份纸质报告(班长统一收齐)。 大作业格式: 1.标题:汇编语言程序设计期末大作业 2.作业题目:(上述) 3.算法分析(流程图) 4.实现代码(必须含注释) 5.实验结果(汇编、连接、运行的截图) 6.总结 代码实现 stude nt struct ; 定义结构 Snu mber db 11,0,11 dup⑺ Sn ame db 11,0,11 dup⑺ En glish db 4,0, 4 dup⑺ Chinese db 4,0, 4 dup⑺ Math db 4,0, 4 dup⑺ Sum db 4,0, 4 dup⑺ stude nt ends ;数据段 data segme nt messMe nu db ' ------------ The Homework of Assembler ------------ ----$' messMe nu1 db ' ------- N ame:TU LIN No:8000110028------ ------ $' messNext db --------- $' messName db 'Please in put the stude nt n ame(<11):$' messNum db 'Please in put the stude nt nu mber(<11):$' messE nglish db 'Please in put the En glish score:$' messChi nese db 'Please in put the Chin ese score:$' messMath db 'Please in put the Math score:$' mess1 db 'n ame:$' mess2 db 'nu mber:$'

汇编语言程序设计第03次作业

汇编语言程序设计第03次作业 1、已知一数据段中的数据定义如下: DATA SEGMENT STR1 DB 0,1,2,3,4,5 STR2 DB ‘012345’ COUNT EQU 30 NUMB DB 3 DUP(2) NUMW DW 10H,-60H POIN DW 0 DATA ENDS 根据以上数据段的定义,改正下列语句中的错误。 (1) MOV AX,STR1 (2) MOV BP,OFFSET STR2 MOV CL,[BP] (3) MOV SI,OFFSET NUMB MOV [SI],’+’ (4) MOV DL,NUMW+2 (5) MOV DI,CH (6) MOV BX,OFFSET STR1 MOV DH,BX+3 (7) INC COUNT (8) MOV NUMB,STR2 (9) LEA POIN,NUMW 2、已知下列数据段定义: DATA SEGMENT NUM DW 10,20,30,40,50 BUF DW 3 DATA ENDS 执行下列程序后,AX中的值是多少? MOV AX, SEG NUM MOV DS, AX MOV BX, OFFSET NUM ADD BX, BUF MOV AX, [BX] 3、设程序中数据的定义如下: NO DW ? NAME DB 16 DUP(0) COUNT DD ? LENGTH EQU $-NO 请问LENGTH的值为多少?表示什么意义?

4、已知数据段有如下定义: FIRST DB 12H,34H SECOND DB 56H,78H 用堆栈指令编一段程序实现将FIRST和SECOND单元的内容互换,FIRST+1和SECOND+1单元的内容互换。 5、设数据段中有10个8位无符号数,定义如下(实际数据请随机设置): NUM DB 19,250,88,42,60,77,39,100,91,2 编写完整的汇编语言程序,找出这组数据中的最大数、最小数,同时计算平均值(取整),以十六进制的形式显示在屏幕上: MAX=??H MIN=??H AVG=??H 要求给出实际调试运行过的代码,打印/抄写在作业纸上。 6、编写完整的汇编语言程序,完成下述显示彩色字符串的功能: (1) 显示字符串的功能必须用宏指令实现,在主程序中调用; (2) 在0行10列显示绿色字符串Hello(属性字02H); 在12行38列显示红色字符串OK(属性字04H); 在24行60列显示黄色字符串Goodbye!(属性字0EH)。

汇编语言部分作业题(含答案)

一、填空题 1、编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。 宏定义如下: CLRB MACRO N, CFIL MOV CX, () CLD MOV ( ), ' ' ;;取空格符的ASCII码 () DI, CFIL REP ( ) ( ) 正确答案: 第一空: n 第二空: al 第三空: LEA 第四空: STOSB 第五空: endm 我的答案:得分: 6.6分 第一空: N 第二空: AL 第三空: LEA 第四空: STOSB 第五空: ENDM 2、某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。请将周工资的计算编写成一条宏指令WAGES. 宏定义如下: WAGES MACRO RATE, HOUR, WAG MOV (), HOUR ;;计算周工资(WAG),公式为:HOUR* RATE MOV BL, RATE MUL BL MOV WAG, AX MOV AL, HOUR ;;计算奖金存入(AX),公式为:HOUR/10的商*3 MOV AH, 0

MOV BL, 10 DIV () MOV BL, () MUL () ADD WAG, ();;计算周工资总数 ENDM 正确答案: 第一空: al 第二空: bl 第三空: 3 第四空: BL 第五空: AX 我的答案:得分: 6.6分 第一空: AL 第二空: BL 第三空: 3 第四空: BL 第五空: AX 3、下面的程序段是二进制到十六进制转换程序,请填空。 mov ch, 4 rotate: mov cl, 4 rol bx,() mov al, bl and al,() add al, 30h ; ’0’~’9’ ASCII 30H~39H cmp al, 3ah jl printit add al,() ; ’A’~’F’ ASCII 41H~46H printit: mov() , al mov ah, 2 int 21h () jnz rotate 正确答案: 第一空:

微机原理程序设计大作业-2011

微机原理与程序设计大作业 ----汇编语言程序设计方法 1. 试编写一个程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCⅡ码为07)。 2. 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并将计数值显示在屏幕上。 3. 试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在屏幕上显示如下信息: (1) 如果三个数都不相等则显示0; (2) 如果三个数有二个相等则显示1; (3) 如果三个数都相等则显示2。 4. 从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类计数结果。 5. 假设已经编制好5个歌曲程序,它们的段地址和偏移地址存放在数据段的跳转表SINGLIST中,试编制程序,根据从键盘输入的歌曲编号1~5,转去执行五个歌曲程序中的一个。 6. 试编制一个程序,把AX中存放的16进制数转换为ASCII码,并将对应的ASCII码依次存放在MEM数组中的四个字节中。例如:当(AX)= 2A49H时,程序执行完后,MEM中的四个字节的内容为39H,34H,41H,32H。 7. 设有10个学生的成绩分别是76,69,84,90,73,88,89,63,100,80分,试编制一个子程序统计60~69分,70~79分,80~89分,90~99分及100分的人数,放在S6,S7,S8,S9和S10单元中。 8. 编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来。 主程序TELIST: ?显示提示符INPUT NAME:; ?调用子程序INPUT_NAME输入姓名; ?显示提示符INPUT A TELEPHONE NUMBER:; ?调用子程序INPUT_PHONE输入电话号码;

汇编语言课后作业

《汇编语言》课后作业 第一次作业 1、编写程序,将AX寄存器中的16位数,每连续4位分成一组,共4组, 然后把这4组数分别放在AL、BL、CL和DL寄存器中。用Debug工具调试程序,查看每条指令执行后,各寄存器的变化。 第二次作业 1、编写程序求数据段中8个字节型数据的累加和。部分代码如下。 Assume cs:codesg, ds:datasg Datasg segment DB 02H,13H, 02H, 35H, 1AH, 35H, 00H, 12H DW 0H ;此字型单元用来保存累加和 Datasg ends 第三次作业 1、编写程序,将内存中03FF:0~03FF:F中的16个数据复制到内存 0000:200~0000:20F中。 2、编写程序,利用堆栈将内存中03FF:0~03FF:F中的16个数据逆序复制到 内存0000:200~0000:20F中。 第四次作业 1、编写程序,在命令行窗体中输出如下图案(红底绿字高亮闪烁)。

程序执行效果,请在DOS命令行下运行zy4.exe文件。 第五次作业 1、编写程序,将数据段中的字符串完成大小写转换。字母字符大写转换成 小写,小写转换成大写,其他字符不变。 如:datasg segment db '$BaSic!InfOrIon*' datasg ends 程序执行后,数据段中的字符串变成了’$bAsIC!iNFoRiON*’。 是有debug工具查看数据段内容如下: 1)执行转换前,数据段的内容如下图 2)执行转换后,数据段的内容如下图 选做题(该题不计入课后作业成绩) 1、编写程序,将数据段中的字型数据以10进制的形式显示。 如:data segment dw 35A6H data ends 35A6H十进制值为13734,显示为13734,如下图:

大工19秋《汇编语言程序设计》大作业题目及要求

学习中心: 专业: 年级:年春/秋季 学号: 学生: 题目: 1.谈谈你对本课程学习过程中的心得体会与建议 2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。 《汇编语言程序设计》课程设计 注意:从以下5个题目中任选其一作答。 总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言 作业提交: 大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东浙江台州奥鹏学习中心[1]VIP) 以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。如下图所示。

注意事项: 独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计! 题目一:进制转换程序 要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。 (2)算法思路:比如可设计二进制转化十六进制的算法, 简单介绍该算法的基本思想,100字左右即可。 (3)算法程序框图:绘制流程图或原理图,从算法的开始 到结束的程序框图。 (4)主要函数代码:列出算法的具体代码。 (5)列出算法中使用指令的含义,比如解释MOV指令的 含义,ADD指令的含义,至少撰写十个指令。 总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言! 题目二:冒泡排序算法 要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。 (2)算法思路:简单介绍冒泡排序算法的基本思想,至少 100字。 (3)算法程序框图:绘制流程图或原理图,从算法的开始 到结束的程序框图。

汇编作业集锦

汇编作业集锦 作业一: 1.在计算机内部,计算机能够直接执行的程序语言是 C 。 A.汇编语言 B。C++语言 C.机器语言 D。高级语言 2.在堆栈段中,存放栈顶地址的寄存器是 B 。 A.IP B.SP C. BX D. BP 3.指令指针寄存器IP用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向 A 。 A.下一条指令的首地址B.下一条指令的地址 C.当前指令的首地址D.当前指令的地址 4.编译程序的功能是 B 。 A.检查源程序中的语法错误和逻辑错误 B.将源程序编译成目标程序 C.改正源程序中的语法错误 D.将高级语言源程序翻译成汇编语言源程序 5.用户为了解决自己的问题,用汇编语言所编写的程序,称为 B 。A.目标程序B.源程序C.可执行程序D.汇编程序 6.计算机中用来存储程序、数据等信息的记忆装置是 D 。 A.控制器 B.运算器 C.CPU D.存储器

7.在宏汇编中,源程序必须通过____汇编_______生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。 8 当SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理地址 是(D ) A.30100H B.30098H C.30102H D.300FEH 9 设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是( C ) A.-82、-126、-2B.-2、-125、126 C.-2、-126、-125D.-82、-125、125 10 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为_________19_________。 11 若物理地址为2D8C0H,偏移量为B6A0H,则段地址为_____2222H____。 作业二: 1. 8086在基址变址的寻址方式中,基址、变址寄存器分别是( B )。 A.AX或CX、BX或CX B.BX或BP、SI或DI C.SI或BX、DX或DI D.CX或DI、CX或SI 2. 设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是(A)。 A.33CECH B.33CF2H

汇编语言程序第二次作业

一、单项选择题(只有一个选项正确,共10道小题) 1. 若PORT_VAL<5,则执行指令MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL GE 5) AND 30)后BX的内容是:()。 (A) 20 (B) 30 (C) 5 (D) 10 你选择的答案:未选择 [错误] 正确答案:A 解答参考: 2. 假设(AL)=10010010, MOV CL,4 SHL AL,CL 执行上述指令后CF和AL的内容是()。 (A) AF=1,(AL)=00001001 (B) AF=0,(AL)=00001001 (C) AF=1,(AL)=00100000 (D) AF=0,(AL)=00100000 正确答案:C 解答参考: 3. 下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。 TEST BH,01H _____K1 (A) JNE (B) JZ (C) JS (D) JC 正确答案:A 解答参考: 4. 已知标号NEXT与指令MOV AX,TYPE NEXT在同一个段内,则AX的值为()。

(A) 0 (B) 1 (C) 2 (D) -1 正确答案:B 解答参考: 5. DATA SEGMENT BUF DB 1,2,3,4,5 COUNT EQU -BUF DATA ENDS 在以上数据段中COUNT的值为( ) (A) 3 (B) 5 (C) 4 (D) 6 正确答案:B 解答参考: 6. 下列是8位二进制数的补码,其中真值最大的是()。 (A) 10001000 (B) 11111111 (C) 00000000 (D) 00000001 你选择的答案:未选择 [错误] 正确答案:D 解答参考: 7. 16位有符号数的补码所表示的十进制数的范围是()。 (A) -32767~+32768 (B) -32768~+32767 (C) -65535~+65536 (D) 0~65535 你选择的答案:未选择 [错误] 正确答案:B 解答参考:

汇编大作业

汇编语言课程设计 课题名称:学生成绩管理系统 小组成员: 班级: 指导教师: 日期:2014.06.18 一、选题目的: 熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和

调试等基本操作。利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。 二、功能设计: 编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。 三、算法流程图:

四、运行结果:

从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果 五、程序源代码: data segment infor0 db 0ah,0dh,'sort=$' infor1 db 0ah,0dh,'input name:$' infor2 db 0ah,0dh,'input score:$' n equ 8 姓名长度 m equ 4 成绩长度(3位+回车符) p equ 3 输入的人数 q equ 3 成绩的位数 buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区 sname db p dup(n+1 dup(0)) 保存姓名 score1 dw p dup(m+1 dup(0)) 保存成绩 score2 dw p dup(m+1 dup(0)) mingci db p dup(0) 名次 x dw ? sign1 dw 0 sign2 dw 0 cont db '1' 计数

汇编数值转换器大作业解读

《汇编语言程序设计》 综合程序设计实验报告 题目:数制转换器 班级:信1101-2班 姓名:王兵茹李夏蕾 胡佳奇 学号:20112917 20112912 20113013 完成日期:2013-11-24

目录 一、简介 二、小组成员及具体分工 三、需求分析与设计 四、代码及分析 五、总结

一、简介 本设计利用汇编语言来实现数制转换设计,用于方便进制之间的互换。设计的内容可以使十六进制、八进制、二进制、十进制的数制互相转换。 二.小组成员及具体分工 小组成员:王兵茹李夏蕾胡佳奇 具体分工:我们三个一开始是各自的分工查资料,先看看单个数制转换,王兵茹负责的是十六进制,李夏蕾负责的是十进制,胡佳琪负责的是二 进制。 最后我们几个一起完成了程序的主要设计,由于大体思路相同,最后加上了八进制的转换。 在程序的修改方面,王兵茹进行了后期的加工,增加了dios中断,把单调的退出改成文本形式下的退出,在退出之前,执行清屏。 最后我们几个商量着完成了实验报告和ppt的制作,经过我们几个人的努力,虽然做的不是特别好,但还是各有收获。 三、需求分析与设计 ●需求分析 通过编程实现显示菜单,然后通过键盘输入菜单相应的选项进入相应的数制转换,然后通过选项对应的子程序跳转来实现转换,子程序中通过宏定义定义数制前后的数制,并且在宏定义过程中实现数制转换算法,最后输出转换后的进制数。 ●设计 ①运行的设计框图 ②整个系统的设计框图

③子程序之间调用关系框图 我们的这个程序主要就是用到的子程序的调用和大量的宏定义,对于输入时的宏定义有charin,strin,numin,输出时的宏定义有charout,strout,numout,输出的时候用到的是栈push和pop,在压栈push时,用到了irp不定重复伪操作。 定义通用inax宏,确定转换之前的进制,例如inax cx、cx=2是把转换之前的进制确定为2存到cx中 定义通用outax宏,确定转换之后的进制,例如outax bx、bx=2是把转换之后的进制确定为2存到bx中 通用宏charin逐个输入转换之前进制字符

大工19春《汇编语言程序设计》在线作业1

(单选题)1: 对计算机的软件、硬件进行管理的是()的功能。 A: 操作系统 B: 数据库管理系统 C: 编译器 D: 用户程序 正确答案: (单选题)2: 以下有关运算器运算功能的描述,()是正确的。 A: 只做加法 B: 只做算术运算 C: 既做算术运算又做逻辑运算 D: 只做逻辑运算 正确答案: (单选题)3: 一个完整的计算机系统应包括()。 A: 运算器、存储器、控制器 B: 外部设备和主机 C: 主机和应用程序 D: 配套的硬件和软件系统 正确答案: (单选题)4: 运算器虽有许多部件组成,但核心部分是()。 A: 数据总线 B: 算术逻辑运算单元 C: cache D: CPU和寄存器 正确答案: (单选题)5: 在计算机系统中,存储器是记忆设备,它主要用来()。 A: 存放数据 B: 存放程序 C: 存放数据和程序 D: 存放微程序 正确答案: (单选题)6: 在变址寄存器寻址方式中,若变址寄存器的内容是4E3C(16进制),给出的偏移量是62(16进制),则它对应的有效地址是()(16进制)。 A: 63 B: 4D9F C: 4E3C D: 4E9E 正确答案: (单选题)7: 在变址寄存器寻址方式中,操作数的有效地址等于()。

A: 基值寄存器内容加上位移量 B: 堆栈指示器内容加上位移量 C: 变址寄存器内容加上位移量 D: 程序记数器内容加上位移量 正确答案: (单选题)8: 在指令系统的寻址方式中,先计算后访问内存的寻址方式是()。A: 立即数寻址 B: 直接寻址 C: 间接寻址 D: 变址选址 正确答案: (单选题)9: 下面的数值表示中,和十进制127相等的是哪一个()。 A: 1113B B: 127H C: 80H D: 7FH 正确答案: (单选题)10: 如果(AL)=35H,执行AND AL,0FFH指令后,CF=()。 A: 0 B: 1 C: 2 D: 3 正确答案: (判断题)11: 计算机系统通过接口与外围设备通信。 A: 对 B: 错 正确答案: (判断题)12: 寄存器在计算机系统中是一个重要部件,只能用于暂存数据。A: 对 B: 错 正确答案: (判断题)13: 八进制数据31转化成十进制数据为30。 A: 对 B: 错 正确答案: (判断题)14: 在所有的进位计数制中,整数部分最低位的权都是1。 A: 对

汇编语言编程实验报告

汇编语言编程实验报告 学号: 姓名: 成绩:

目录 一、实验一: ................................................... 错误!未定义书签。 二、实验二: (4) 三、实验三: (8) 四、实验四: (10) 五、实验五: ................................................... 错误!未定义书签。 六、实验六: (19) 七、汇编实验总结 (23)

实验一 一.实验题目 【汇编语言补充作业T20】编写完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。 二.程序流程及思路 实现字符串输入,需要分成三个步骤: 1、在数据段中定义一个缓存区为存放字符串做准备; 2、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址; 3、在输入的字符串尾加上‘$’字符,以作为输出结束条件。 实现字符串输出,则需要注意的问题是: 1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度 和字符串实际字符数; 2、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。 三.源程序清单 DATA SEGMENT N EQU 50 MAXLEN DB N ;缓冲区字符的最大长度 ACTLEN DB ? ;实际字符个数 STRING DB N DUP(?) ;字符空间 CR DB 0AH,0DH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,MAXLEN MOV AH,0AH INT 21H ;字符串输入 MOV AH,09H LEA DX,CR INT 21H ;回车换行 MOV BL,MAXLEN+1 ;取实际的字符长度 MOV BH,0 LEA SI,MAXLEN+2 ;取字符开始的首地址

大工19秋《汇编语言程序设计》大作业题目及要求

学习中心: 专业: 年级:年春/秋季 学号: 学生: 题目: 1.谈谈你对本课程学习过程中的心得体会与建议? 2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。 《汇编语言程序设计》课程设计 注意:从以下5个题目中任选其一作答。 总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言 作业提交: 大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东101410013979浙江台州奥鹏学习中心[1]VIP) 以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。如下图所示。 注意事项: 独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计! 题目一:进制转换程序 要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:比如可设计二进制转化十六进制的算法,简 单介绍该算法的基本思想,100字左右即可。 (3)算法程序框图:绘制流程图或原理图,从算法的开始到 结束的程序框图。 (4)主要函数代码:列出算法的具体代码。 (5)列出算法中使用指令的含义,比如解释MOV指令的含 义,ADD指令的含义,至少撰写十个指令。 总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言! 题目二:冒泡排序算法 要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。 (2)算法思路:简单介绍冒泡排序算法的基本思想,至少 100字。 (3)算法程序框图:绘制流程图或原理图,从算法的开始 到结束的程序框图。 (4)主要函数代码:列出算法的具体代码,如讲一个首地址 为A的N字数组,编制程序将该数组中的数据按照从大 到小排序。 (5)列出算法中使用指令的含义,比如解释MOV指令 的含义,CMP指令的含义,至少撰写十个指令。 总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言! 题目三:设立标志位算法 要求:(1)撰写一份word文档,里面包括(算法思路、算法程

汇编语言与微机接口技术作业6章(含答案)

作业: 课本6.5 6.7 第6章补充题参考答案 补充题1:初始化8259A控制器,系统中有一片8259A,中断请求用电平触发,中断类型号为60H~67H,特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。8259A端口地址为93H/94H。编写其初始化程序。 答: MOV AL, 1BH ;设置ICW1(中断请求信号采用电平触发方式,单片,

OUT 94H, AL MOV AL, 60H ;设置ICW2(将中断类型码高5位指定为01100) OUT 93H, AL MOV AL, 13H ;设置ICW4(用特殊全嵌套方式;用中断自动结束方式;采用非缓冲方式,工作于8088/8086系统) OUT 93H, AL 补充题2:开关K4的信号输入到中断控制器8259A的IR2,当K4开关合上瞬间,产生中断,在中断服务程序中完成读取开关K0~K3的状态,并在7段数码管上显示数字或符号。设输出接口的地址为3F2H,输入接口地址为3F3H。当开关K0~K3的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’,8259A的端口为3F0H和3F1H.设其中断号为08H~0FH。1. 设计相关的接口电路,包括8259A的连接。 2. 编写主程序完成初始化8259A和相关中断向量的设置。 3. 编写中断服务程序。 答: 1. 接口电路图 2. 初始化程序: INPORT EQU 03F3H OUTPORT EQU 03F2H PORT8259 EQU 03F0H …… ;设置数码管显示数据 Seg7 DB 3FH,06H, 5BH,4FH,66H,6DH, 7DH,07H,7FH,67H,77H, 7CH,39H,5EH,79H,71H …… MOV AL, 13H ;设置ICW1(中断请求信号采用边沿触发方式,单片,

相关主题
文本预览
相关文档 最新文档