南昌大学实验报告
学生姓名: 学号:专业班级:
实验一 数据大小比较
实验内容
自行定义两个数据(字节或字均可,带符号数或无符号数均可),编程实现两个数的大小比较。若NUM1>NUM2,AL寄存器送字符﹥,并在屏幕上显示该字符;若NUM1<NUM2,AL寄存器送字符﹤,并在屏幕上显示该字符;若NUM1=NUM2,AL寄存器送字符﹦,并在屏幕上显示该字符。
实验程序
data segment
num1 db 33h
num2 db 44h
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov al,num1
mov ah,num2
cmp ah,al
jge next_1
mov dl,'>'
mov ah,2
int 21h
jmp next_3
next_1:
cmp ah,al
jg next_2
mov dl,'='
mov ah,2
int 21h
jmp next_3
next_2:
mov dl,'<'
mov ah,2
int 21h
jmp next_3
next_3:
mov ah,1
int 21h
mov ah,4ch
int 21h
code ends
end start
过程及实验结果
实验心得
通过本次实验,了解与熟悉了软件的应用步骤与过程,同时进行了最基础的程序设计,掌握了最基础的汇编语言的应用。
第二篇:南昌大学微机原理实验十一 两个多位十进制数相减
实验十一两个多位十进制数相减
一.实验要求
将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
二.实验目的
1. 学习数据传送和算术运算指令的用法。
2. 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
三.实验程序框图
四.实验程序:
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)
DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)
MES1 DB '-','$'
MES2 DB '=','$'
DATA ENDS
STACK SEGMENT ;堆栈段
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DATA1
MOV BX,05
CALL DISPL ;显示被减数
MOV AH,09H
LEA DX,MES1
INT 21H
MOV SI,OFFSET DATA2
MOV BX,05 ;显示减数
CALL DISPL
MOV AH,09H
LEA DX,MES2
INT 21H
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
CALL SUBA ;减法运算
MOV SI,OFFSET DATA1
MOV BX,05 ;显示结果
CALL DISPL
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
INT 21H
MOV AX,4C00H
INT 21H
DISPL PROC NEAR ;显示子功能
DSI: MOV AH,02
MOV DL,[SI+BX-1] ;显示字符串中一字符
INT 21H
DEC BX ;修改偏移量
JNZ DSI
RET
DISPL ENDP
SUBA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
SU1: SUB BYTE PTR[SI+BX-1],30H
SUB BYTE PTR[DI+BX-1],30H
DEC BX ;将ASCII 码表示的数字串
JNZ SU1 ;转化为十六进制的数字串
MOV SI,DX
MOV DI,BP
MOV CX,05 ;包括进位,共5位
CLC ;清进单位
SU2: MOV AL,[SI]
MOV BL,[DI]
SBB AL,BL ;带进位相减
AAS ;非组合BCD码的减法调整
MOV [SI],AL ;结果送被减数区
INC SI
INC DI ;指向下一位
LOOP SU2 ;循环
MOV SI,DX
MOV DI,BP
MOV BX,05
SU3: ADD BYTE PTR [SI+BX-1],30H
ADD BYTE PTR [DI+BX-1],30H
DEC BX ;十六进制的数字串转化ASCII码表示的数字串
JNZ SU3
RET
SUBA ENDP
CODE ENDS
END START