电子科技大学信软学院汇编语言选修课2024年实验代码
实验1——表达式运算程序设计
实现内容
编写源程序,计算表达式: Z=(5X+2Y-7)/2
设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ。
代码
DATA SEGMENT
VARX DB 3 ;VARX,VARY赋值
VARY DB 3
VARZ DB ? ;不分配常量,用于存放结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
mov ax,DATA
mov ds,ax ;初始化ds
mov al,[VARX]
mov ah,5
mul ah
mov bx,ax ;5X
mov ax,0 ;清零
mov al,[VARY]
shl ax,1 ;2Y
add ax,bx
sub ax,7
shr ax,1 ;/2
mov [VARZ],ax
MOV AH, 4CH
INT 21H
CODE ends
END START
实验2——分支程序与循环程序设计
实现内容
分别统计下列20个数中小于零、大于等于零且小于等于5、大于5的数据个数,分别存入字节单元RES1、RES2和RES3中并显示在屏幕上。
BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51
屏幕上显示:6 4 10
代码
assume cs:codesg,ds:data
data segment
RES1 DB 6
RES2 DB 4
RES3 DB 10 ;三种类型的统计结果
data ends
codesg segment
start:
mov ax,data
mov ds,ax
mov al,ds:[RES1]
call print_byte
mov al,ds:[RES2]
call print_byte
mov al,ds:[RES3]
call print_byte
mov ax,4c00H
int 21h
print_byte: ;打印
mov ah,0
call to_ascii
mov ah, 2
mov dl, al
int 21h
mov dl, 20h ; 添加换行符
int 21h
ret
to_ascii:
cmp al, 10
jb less_than_10
; 大于等于 10 的情况
mov bl,10 ; 取出十位数
div bl
mov bl,ah ; 保存个位数
mov ah, 2 ; 打印十位数
add al,30h ;ascii转换
mov dl, al
int 21h
add bl,30h ;ascii转换
mov al,bl ;移给al,方便print_byte打印
ret
less_than_10:
add al, 30h ; 小于 10 的情况
ret
codesg ends
end start