微机原理实验四 汇编语言程序设计与调试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 1
一.实验目的:
1.伪指令、宏指令的使用
2.汇编语言程序设计与调试
3.CodeView编译调试工具软件的使用
二.实验内容
1.(重做,用宏定义表格,不用xlat指令,)定义一数据段data,从10H开始存放y 函数值表,table为首指针( Y=X2-2X+3 ;X=3,4,5,6,7,8,9,10)。编一程序根据X值查table表,把对应Y值存入Y变量中。
mm macro
data segment
ORG 10
table db 6,11,18,27,38,51,66,83
x db 5
y db ?
data ends
ENDM
code segment
assume cs:code,ds:data
start: MM
mov ax,data
mov ds,ax
lea bx,table
mov ah,0
mov al,x
sub al,3
add bx,ax
mov al,[bx]
mov y,al
mov ah,4ch
int 21h
code ends
end start
2.字节变量BCDC中定义了10个字节的压缩BCD码(20十进制数),编一程序按顺序把它们转换成字符(ASC码),存入ASCC开始的字节数据区。
data segment
org 10H
BCDC db 61H,11H,18H,27H,38H,51H,66H,83H,44H,55H
ASCC db 20 DUP(?)
data ends
code segment
assume cs:code ,ds:data
start: mov AX,data
mov ds,AX
mov si,offset BCDC
MOV DI,OFFSET ASCC
MOV AX,0
mov cx,10
LOOP1:MOV AL,[si]
MOV AH,[si]
AND AL,0FH
MOV CL,4
SHR AH,CL
ADD AH,30H
mov [DI],AH
INC DI
ADD AL,30H
mov [DI],AL
INC si
INC DI
dec cx
jnz LOOP1
mov AH,4CH
INT 21H
code ends
end
start
3.字符串STR1(如‘Is a ADSL device.’),串长(字节数)存放在字变量LEN中,
编程把STR1串中小写字母都转换成大写字母而其它字符不变。
data segment
org 10H
STR1 DB 'Is a ADSL device.'
LEN DB 19
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: mov ax,data
MOV DS,AX
MOV CX,19
MOV SI,OFFSET STR1
MOV AX,0
LOOP1: MOV AX,[SI]
CMP AX,'a'
JB LOOP2
SUB AX,20H
LOOP2: MOV [SI],AX
INC SI
DEC CX
JNZ LOOP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
三.实验步骤
1.选用合适的程序文本编辑软件编辑源程序,并为文件取以.ASM为扩展名的文件存盘。
2.用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。
3.用LINK对由MASM汇编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。
4.用CV调试程序,检察运行结果,并调试程序。
5.用不同数据反复验正程序的正确性。
6.综合实验结果,得出结论或感受。