汇编语言实验报告

发布时间 : 星期日 文章汇编语言实验报告更新完毕开始阅读

3. 数值显示:将二进制数据用十进制显示到屏幕 子程序描述: 名称:dtoc

功能:将word型数据转变为表示十进制的字符串,字符串以0结尾。 参数:(ax)=word型数据

ds:si指向字符串的首地址 返回:无

应用举例:编程将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。

assume cs:code data segment

db 10 dup (0) data ends

code segment start:

mov ax,12666 ;把被除数看作是32位 mov bx,data mov ds,bx mov si,0 call dtoc

mov dh,8 mov dl,3 mov cl,2

call show_str

mov ax,4c00h int 21h

dtoc:mov bx,10 ;设置除数为10

mov dx,0 ;设置被除数的高位为0

mov cx,ax ;将除法运算后的商存入cx,jcxz跳转据此实现 div bx jcxz dtoc1

inc di ;记录字符个数 add dx,30h ;将余数转化为字符

push dx ;将dx入栈,保证输出的结果是正确的

jmp dtoc

dtoc1:mov cx,di ;将字符数目存入cx,依次决定写入的循环次数

dtoc2:pop dx ;将dx出栈,最先出栈的是最后存入的字符 mov ds:[si],dx;将dx写入数据区域 inc si ;指向下一个单元

loop dtoc2

mov [si],0 ;设置字符串的结尾符0 ret

show_str: mov ax,160 mul dh mov bx,ax mov ax,2 mul dl add bx,ax mov ax,0B800H mov es,ax mov dl,cl mov cl,0 mov si,0 show0:

mov ch,ds:[si] jcxz end1

mov byte ptr es:[bx],ch mov byte ptr es:[bx+1],dl add bx,2 inc si jmp show0 end1: ret

code ends end start

实验11 编写子程序

编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转换成大写字母。 子程序描述如下: 名称:letterc

功能:将以以0结尾的字符串中的小写字母转换成大写字母 参数:ds:si指向字符串首地址

assume cs:codesg

datasg segment

db \

datasg ends

codesg segment

begin:mov ax,datasg mov ds,ax mov si,0 call letterc

mov ax,4c00h int 21h

letterc:mov ch,0 ;将寄存器cx的高位置为0 mov cl,ds:[si] ;将ds段中的字符存入cl cmp cl,97 jb s0

cmp cl,122

ja s0 ;判断读入的字符的ASCII码是否在97-122之间,如果是即为 and cl,11011111b ;小写字母

mov ds:[si],cl ;将二进制位的第五位置为0,使得小写字母变大写字母 s0: inc si ;将si自增,指向下一个字符

jcxz end1 ;通过判断读入的字符是否为0,来确定是否结束循环 jmp letterc end1: ret

codesg ends end begin

联系合同范文客服:xxxxx#qq.com(#替换为@)