汇编语言编程实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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