一、实验目的
1. 掌握顺序程序设计方法
2. 掌握汇编语言编程设计方法。
二、实验内容
1.用查表的方法将一位十六进制数转换成它相应的ASCII码。
代码及注释:
Data segment ;定义数据段
Tab db 30h,31h,32h,33h,34h,35,36h,37h,38h,39h ;定义一个Tab的字节型数组,包含了16进制数0到9对应的ASCII字符
Db 40h,41h,42h,43h,44h,45h,46h ;定义另一个字节型数组,包含了16进制数A到F对应的ASCII字符。
Hex db 'A' ;存储16进制数'A'的字节型变量
asch db 6 ;asch字节型变量 初始值6
ascl db 7 ;ascl字节型变量 初始值7
Data ends
Code segment ;定义代码段
Assume cs:code,ds:data ;让代码段的段寄存器为cs,数据段的段寄存器为ds
Start:push ds ;程序入口,将数据段的段地址压入栈,保存数据段地址
Xor ax,ax ;让寄存器ax与自身异或操作,即清零
Mov ax,data ;将数据段地址给寄存器ax
Mov ds,ax ;将ax的地址给数据段寄存器ds
Aal:mov al,hex ;将变量Hex中的'A'移给寄存器al
Mov ah,al ;将al中的值移动到寄存器ah
And al,0f0h ;将al中的值与0F0H进行按位与操作
Mov cl,04h ;将寄存器cl设置为04H
Shr al,cl ;将al中的值逻辑右移cl位
Mov bx,offset tab ;将Tab数组的偏移地址加载到寄存器bx中
Xlat ;使用bx寻址,将al中的值作为偏移地址,找到对应位置的元素,将其放入al中
Mov asch,al ;将al中的值存储到Asch变量中
Mov al,ah ;将寄存器ah的值移动到al中
And al,0fh ;将al中的值与0FH进行按位与操作
Xlat ;使用bx寻址,将al中的值作为偏移地址,找到对应位置的元素,将其放入al中
Mov ascl,al ;将al中的值存储到Ascl变量中
Nop ;空操作 占位
Mov ah,4ch ;将4CH加载到寄存器ah中,表示程序结束的系统调用号
int 21h ;调用21H中断,结束程序
code ends
End start ;程序结束标记,指定程序的入口点为start
运行结果展示:
2.编制一个程序,输入一个小写字母,转为大写字母后输出。
代码及注释:
Data segment ;定义数据段
msg db "Enter a lowercase letter: $"
msd db " Output uppercase letters: $"
input db 0 ;定义一个字节型变量,用于存储输入的字符
output db 0 ;定义一个字节型变量,用于存储转换后的字符
Data ends
Code segment
assume cs:Code, ds:Data
start:
mov ax, Data ; 初始化数据段
mov ds, ax
mov ah, 09h ; 显示提示信息
lea dx, msg
int 21h
mov ah, 01h ; 读取键盘输入
int 21h
mov input, al
mov bl, input ; 将输入的字符存入 bl 寄存器
and bl, 11011111b ; 将小写字母转换为大写字母
mov output, bl ; 存储转换后的字符
mov ah, 09h ; 显示提示信息
lea dx, msd
int 21h
mov ah, 02h ; 显示转换后的大写字母
mov dl, output
int 21h
mov ah, 4ch ; 程序结束
int 21h
Code ends
End start
运行结果及展示: