- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.数据传送:
问题描述:
设在DS=3000H,偏移地址为0100H的内存中顺序存放着100个字节的数据。要求传送到以2000H为起始偏移地址的区域。
代码:
利用寄存器间接寻址来寻找操作数可以编程如下:
mov ax,3000h
mov ds,ax ;建立数据段
mov si, 0100h ;建立源数据指针
mov di,2000h ;建立目的地指针
mov cx,100 ;设置计数器
nt: mov al,[si] ;取数
mov [di],al ;送数
inc si ;调整指针
inc di
dec cx ;计数器减1
jne nt ;CX-1≠0转 nt 标号
另一种方法:
MOV AX,3000H
MOV DS,AX
MOV ES,AX
MOV SI,0100H
MOV DI,0200H
MOV CX,100
CLD
NT:MOVSB
LOOP NT
INT 20H
2.多字节的加法:
问题描述:
有两个4字节的无符号数相加,这两个数分别放在2000H和3000H开始的存储单元中,低位在前,高位在后。运算后,得到的和放在2000H开始的内存单元中。
代码:
MOV SI,2000H ;取第一个数的首地址
MOV AX,[SI] ;将第一个数的低16位取到AX
MOV DI,3000H ;取第二个数的首地址
ADD AX,[DI] ;两个数的低16位 相加。
MOV [SI],AX ;低16位相加的结果送到2000H和2001H单元
MOV AX,[SI+2] ;取第一个数的高16位送到AX中
ADC AX,[DI+2] ;两个数的高16位连同CF相加
MOV [SI+2],AX ;高16位相加的结果送到2002H,2003H单元。
3.多字节组合BCD码十进制加法
问题描述:
设第一个数据在1000H开始的8个内存单元中,第二个数据在2000H开始的8个内存单元中,要求相加之后将结果放在2000H开始的内存区域。
代码:
mov si,1000h ;SI指向第一个数据
mov di,2000h ;DI指向第二个数据
mov cx,8 ;共有8字节长
c1c ;清除进位标志
l1: mov a1,[si] ;取第一个数据的1个字节
adc a1,[di] ;加上第二个数据的相应字节
daa ;对相加结果进行十进制调整
mov [di],a1 ;存到指定的内存区域
inc si ;指向下一个字节
inc di ;指向下一个字节
dec cx ;计数器减1
jnz l1 ;如未算完,则继续
int 20h ;返回DOS
4.多字节的移位
问题描述:使BX所指的四个单元中的四字节数左移1位,
代码:SAL WORD PTR [BX+0],l
RCL WORD PTR [BX+2],1
5.ASCII码转换为BCD码
问题描述:设键盘输入的100个十进制数的ASCII码已在首地址DS为3000H,偏移量为0100H的内存区域中,要求把它们转换为组合型BCD码,高地址的放在高半字节。存入偏移地址为0200H的区域中。
分析:算法是这样的:先将较低字节的32H转换为02H,再将较高字节的34H转变为40H,然后将其与02H按位相或成为42H。循环50次完成50个字节的组合BCD码的转换。
代码:
MOV AX,3000H
MOV DS,AX
MOV
文档评论(0)