一、实验目的
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字节型变量 初始值6ascl db 7 ;ascl字节型变量 初始值7
Data ends
Code segment ;定义代码段Assume cs:code,ds:data ;让代码段的段寄存器为cs,数据段的段寄存器为dsStart:push ds ;程序入口,将数据段的段地址压入栈,保存数据段地址Xor ax,ax ;让寄存器ax与自身异或操作,即清零Mov ax,data ;将数据段地址给寄存器axMov ds,ax ;将ax的地址给数据段寄存器dsAal:mov al,hex ;将变量Hex中的'A'移给寄存器alMov ah,al ;将al中的值移动到寄存器ahAnd al,0f0h ;将al中的值与0F0H进行按位与操作Mov cl,04h ;将寄存器cl设置为04HShr 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, axmov ah, 09h ; 显示提示信息lea dx, msgint 21hmov ah, 01h ; 读取键盘输入int 21hmov input, almov bl, input ; 将输入的字符存入 bl 寄存器and bl, 11011111b ; 将小写字母转换为大写字母mov output, bl ; 存储转换后的字符mov ah, 09h ; 显示提示信息lea dx, msdint 21hmov ah, 02h ; 显示转换后的大写字母mov dl, outputint 21hmov ah, 4ch ; 程序结束int 21h
Code ends
End start
运行结果及展示: