好文档 - 专业文书写作范文服务资料分享网站

《汇编语言》实验讲义讲解

天下 分享 时间: 加入收藏 我要投稿 点赞

汇编语言程序设计实验指导书

二、 实验内容

1 编写一个程序,用二进制显示从键盘输入一个字符的ASCII码。

2 编写一个程序,记录某个字存储单元数据中1的个数,以十进制形式显示结果。

三、 实验准备

1 编写实验内容要求的两个程序。

2 写出调试以上程序,即修改程序参数,检查结果的操作方法。 3 熟悉源程序汇编、连接命令的使用方法即要回答的内容。

四、 实验步骤

1 用EDIT或其它编辑软件,编写.ASM源程序,例如Binary.ASM及Statistic.ASM。 2 对其进行汇编及连接,产生.EXE文件。 3 对.EXE文件进行调试运行。

a. 用DEBUG调试运行,学会修改AL内容的方法。 b. 对DSPKEY.EXE键入不同的字符,分别进行调试。 c. 在MS-DOS下运行这两个.EXE文件。

五、 实验报告要求

画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

六、 参考程序段清单: ;Binary.asm

mov cx,8 ;CX←8(循环次数)

again: shl bl,1 ;左移进CF,从高位开始显示 mov dl,0 ;MOV指令不改变CF adc dl,30h ;DL←0+30H+CF ;CF若是0,则DL←' 0 ' ;CF若是1,则DL←' 1 ' mov ah,2

int 21h ;显示 loop again

;CX减1,如果CX未减至0,则循环

;Statistic.ASM ;数据段

number dw 1110111111100100B ;代码段

mov bx,number

xor dl,dl ;循环初值:DL←0

again: test bx,0ffffh ;也可以用cmp bx,0 jz done

;全部是0就可以退出循环,减少循环次数 shl bx,1 ;用指令shr bx,1也可以 adc dl,0

Page 6 of 26

汇编语言程序设计实验指导书

;利用ADC指令加CF的特点进行计数 jmp again

done: cmp dl,10 ;判断1的个数是否小于10 jb digit ;1的个数小于10,转移 push dx

mov dl,‘1’ ;1的个数大于或等于10 mov ah,2 ;则要先显示一个1 int 21h pop dx sub dl,10

digit: add dl,‘0’ ;显示个数 mov ah,2 int 21h

A---------------------------------------------------A

B——————————————————————B

实验 B

一、预习内容

1.多重循环程序和排序程序设计方法。 2.带符号数的比较转移指令:JL,JLE,JG,JGE

二、目的要求

1.掌握多重循环程序和排序程序设计方法。 2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE

三、实验内容

建立学生名次表,以grade为首地址的数组中保存了学生的成绩,其中 grade+i 保存学号为i+1的学生的成绩。要求建立一个10个字的rank数组,并根据grade中的学生成绩将学生名次填入rank数组中,其中rank+i的内容是学号为i+1学生的名次(提示:一个学生的名次等于成绩高于该学生的人数加1)

DSEG SEGMENT

grade dw 88,75,95,63,98,78,87,78,90,60 rank dw 10 dup(?) DSEG ENDS CSEG SEGMENT

assume cs:CSEG, ds:DSEG start:

mov ax, dseg mov di,10 mov bx,0

loop:

mov ds, ax

Page 7 of 26

汇编语言程序设计实验指导书

mov dx,1 mov cx,10 ②

next:

cmp ax,[si] jge no_count inc dx

no_count:

add si,2 loop next ③ add bx,2

④ jne loop mov ax, 4c00h int 21h

CSEG ENDS end start

实验步骤:

1.输入,汇编并连接此程序。

2.在DEBUG下运行此程序,记录运行结果。

3.将转移指令JGE改为JG,JL,JLE分别运行记录排序结果,察看结果是否正确不对,并分析原因。

四、实验报告或作业

1.分析程序,画出程序流程图

2.汇编,连接及调试时产生的错误,其原因及解决办法。

3.记录JGE情况下的排序结果,同时比较将转移指令JGE改为JG,JL,JLE 时的排序结果,并分析结果正确与否,如果不正确,写出原因和解决办法。 4.思考:

如果想外循环也用loop实现,应该怎样修改程序?

B——————————————————————B 实验四 分支程序设计

A---------------------------------------------------A

实验A (必做)

一、 实验目的:

1 掌握分支程序的设计方法

2 掌握利用DEBUG修改参数、检查结果的方法。

3 掌握汇编语言源程序的编辑、汇编、连接及调试过程。

Page 8 of 26

汇编语言程序设计实验指导书

二、 实验内容

1 编写一个程序,显示AL寄存器中的两位十六进制数

2 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或

a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

三、 实验准备

1 编写实验内容要求的两个程序。

2 写出调试以上程序,即修改程序参数,检查结果的操作方法。 3 熟悉源程序汇编、连接命令的使用方法即要回答的内容。

四、 实验步骤

1 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。 2 对其进行汇编及连接,产生.EXE文件。 3 对.EXE文件进行调试运行。

a. 用DEBUG调试运行,学会修改AL内容的方法。 b. 对DSPKEY.EXE键入不同的字符,分别进行调试。 c. 在MS-DOS下运行这两个.EXE文件。

五、 实验报告要求

画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

六、 参考程序清单

(1) 显示AL中两位十六进制数程序: ;DISPHEX.ASM CODE SEGMENT

ASSUME CS:CODE START: MOV AL,3EH MOV BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7 NEXT1: ADD DL,30H MOV AH,2

INT 21H ;显示高位ASCII码 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7

Page 9 of 26

汇编语言程序设计实验指导书

NEXT2: ADD DL,30H MOV AH,2 V AH,2

INT 21H ;显示低位ASCII码 MOV AH,4CH INT 21H

CODE ENDS ;返回DOS END START

(2) 显示键入字符程序 ;DISPKEY.ASM CODE SEGEMENT

ASSUME CS:CODE START: MOV AH,1

INT 21H ;等待键入字符,送AL CMP AL,0DH ;是否是回车符?

JZ DONE ;是则转DONE退出程序 CMP AL,’0’ JB NEXT

CMP AL,’9’ JA CHARUP MOV DL,AL MOV AH,2 INT 21H JMP START CHARUP: CMP AL,41H JB NEXT CMP AL,5AH JA CHRDN

DISPC: MOV DL,’C’ MOV AH,2 INT 21H NEXT: JMP START CHRDN: CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPC DONE: MOV AH,4CH INT 21H CODE: ENDS

END START

A------------------------------------------A

Page 10 of 26

《汇编语言》实验讲义讲解

汇编语言程序设计实验指导书二、实验内容1编写一个程序,用二进制显示从键盘输入一个字符的ASCII码。2编写一个程序,记录某个字存储单元数据中1的个数,以十进制形式显示结果。三、实验准备1编写实验内容
推荐度:
点击下载文档文档为doc格式
84kqd2v10u9pg7z7hdvh6c4rp7oypx00ssx
领取福利

微信扫码领取福利

微信扫码分享