当前位置:首页 > 汇编语言实验报告
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
共分享92篇相关文档