汇编语言编程实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言编程实验报告

学号:

姓名:

成绩:

目录

一、实验一: ................................................... 错误!未定义书签。

二、实验二: (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 ;取字符开始的首地址

MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$

MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

四.结果拷屏

实验二

一. 实验题目

【汇编语言补充作业T23】假设CX:BX中存放了4为非压缩的BCD码表示的十进制数4386,请编写完整程序将这个数转化成2进制数并存放到DI寄存器中。

二. 程序流程及思路

首先,要解决以上问题需分三个步骤进行:

1、将CX:BX中的非压缩BCD码调整成压缩BCD码。这有两种方法:

a、利用非压缩BCD码调整指令AAD,达到以上目的;

b、利用移位指令,将两个非压缩BCD码进行整合,达到以上目的; (注:以下程序采用b方法)

2、将调整后的压缩BCD码转化为十进制数。调整后b3b2=43,b1b0=86。转化方法为b3b2*100+b1b0 → DI。计算结果送入DI寄存器中。

由于100=64+32+4,因此考虑用移位指令进行BCD码的乘法运算。

3、利用移位指令编写一段代码进行结果输出,以便于在屏幕上直接进行核对检验。

三.源程序清单

DATA SEGMENT

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

start: mov ch,04

mov cl,03

mov bh,08

mov bl,06 ;

mov al,ch

mov ah,0

shl ax,1 ;ch位乘10(10=8+2)

mov si,ax

shl ax,1

shl ax,1

add ax,si

;

mov ch,0

add ax,cx

mov dx,ax ;dx=43

shl dx,1

shl dx,1

mov ax,dx

shl dx,1

shl dx,1

shl dx,1

add ax,dx

shl dx,1 ;

add dx,ax ;dx乘以100(100=64+32+4)

mov al,bh

mov ah,0

mov si,0

shl ax,1 ;bh位乘10

mov si,ax

shl ax,1

shl ax,1

add ax,si ;

mov bh,0

add ax,bx

add dx,ax

mov di,dx

show: mov cl,4 ;该段进行结果输出检验

mov bx,dx

shr bh,cl

mov dl,bh

add dl,30h

mov ah,2

int 21h ;1位

mov bh,dh

and bh,0Fh

mov dl,bh

add dl,30h

mov ah,2

int 21h ;2位

mov dh,bl

shr dh,cl

mov dl,dh

add dl,30h

相关文档
最新文档