实训汇编语言设计——16位数拆分为4组

本文介绍了一个在AX环境中将16位数进行分组并显示的方法。通过一系列寄存器操作,将原始数值按四位一组分开,并转换为可视字符输出,展示了基本的位操作和移位技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习实训:AX中16位数分为4组(1234分为1,2,3,4),每组4位分别放在AL,BL,CL,DL

答:

data segment

data ends

cseg segment

assume cs:cseg,ds:data

start:

mov ax,1234h

mov cl,4

mov dx,ax

and dx,0fh

mov bx,ax

shr bx,cl

and bx,0fh

mov ch,bl

mov bx,ax

shr bx,cl

shr bx,cl

and bx,0fh

shr ax,cl

shr ax,cl

shr ax,cl

and ax,0fh

mov cl,ch

and cx,0fh


mov bh,bl

mov dh,dl

mov dl,al

add dl,40h

mov ah,2

int 21h


mov dl,bh

add dl,40h

mov ah,2

int 21h

 

mov dl,cl

add dl,40h

int 21h


mov dl,dh

add dl,40h


int 21h

mov ah,1

int 21h

exit:

mov ah,4ch

int 21h

cseg ends

end start

输出:ABCD (对应:al=01h,bl=02h,cl=03h,dl=04h)

5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序输出 5.3 将AX寄存器中的16位数分成4每组4,然后把这四分别放在AL、BL、CL、DL中。 5.4 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NOT MATCH’。 5.5 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次。 5.6 编写程序,将一个包含有20个据的M分成两个:正P和负N,并分别把这两个中的据的个显示出来。 5.7 试编制一个汇编语言程序,求出首地址为DATA的100D字中的最小偶,并把它放在AX中。 5.8 把AX中存放的16二进制K看作是8个二进制的“四分之一字节”。试编写一个程序,要求一下值为3(即11B)的四分之一字节,并将该在终端上显示出来。 5.9 试编写一汇编语言程序,要求从键盘接收一个四的十六进制,并在终端上显示与它等值的二进制。 5.10 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次,并以格式”SUNXXXX“显示出次。 5.11 从键盘输入一系列以$为结束的字符串,然后对其中的字字符进行计,并显示出计结果。 5.12 有一个首地址为MEM的100D字,试编制程序删除中所有为零的项,并将后续项向前压缩,最后将的剩余部分补上零。 5.13 在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在字,如有,则把CL的第五置1,否则置0. 5.14 在首地址为TABLE的中按递增次序存放着100H个16补码,试编写一个程序把出现次最多的及其出现的次分别放在AX和CX中。 5.15 据段中已定义了一个有N个字据的M,试编写一程序求出M中绝对值最大的,把它放在据段的M+2n单元中,并将该的偏移地址存放在M+2(n+1)单元中。 5.16 在首地址为DATA的字中,存放了100H个16补码,试编写一个程序求出它们的平均值放在AX寄存器中;并求出中有多少个小于此平均值,将结果放在BX寄存器中。 5.17 试编写一个程序,把AX中的十六进制转换为ASCII码,并将对应的ASCII码依次存放到MEM中的四个字节中,例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节的内容为39H,34H,41H和32H。 5.18 把0~100D之间的30个存入以GRADE为首地址的30个字中,GRADE+i表示学号i+1的学生的成绩。另一个RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写一程序,根据GRADE中的学生成绩,将学生名次填入RANK中。 5.19 已知A包含15个互不相等的整,试编写一程序,把既在A中又在B中出现的整存在于中C中。 5.20 设在A,B和C单元中存放着三个,若三个都不是0,则求出三树之和并存放于D单元中;其中有一个为0,则把其他两个也清零。试编写此程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值