- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 4 章 汇编语言程序设计
已知在 BUF 的起始处保存有 N 个字符的 ASCII 码,编写汇编语言程序实现, 将这组字符串传送到缓冲区 BUFR 中,并且使字符串的顺序与原来的顺序相反。
解: BUF
BUFR
DB BONJOUR_BELLE
DB 100 DUP(?)
MOV CX, N
LEA SI, BUF
LEA DI, BUFR
ADD DI,CX
DEC DI
L1:
MOV AL,[SI]
MOV [DI],AL
INC SI
DEC DI
LOOP L1
利用移位、传送和相加指令实现AX 的内容扩大 10 倍。
解:将扩大后的结果放在 DX : AX 中,注意到 10× AX =8× AX +2× AX 。
XOR
SHL
RCL
MOV
MOV
SHL
RCL
SHL
RCL
DX,DX
AX, 1
DX, 1
BX,AX
CX,DX
AX, 1
DX, 1
AX, 1
DX, 1
ADD
AX, BX
ADC
DX, CX
在缓冲区 VAR 中连续存放着 3 个 16 位的无符号数, 编写程序实现将其按递增关系排列;如果 VAR 中保存的为有符号数,则再编写程序实现将其按递减关系排列。
解: VAR DW 1236 , -432, 3900
XOR SI,,SI
MOV AX,V AR[SI]
CMP AX, V AR[SI+2]
JAE L1
XCHG AX, V AR[SI+2]
L1:
CMP
JAE
AX, V AR[SI+4]
L2
XCHG
AX, V AR[SI+4]
L2:
MOV
MOV
CMP
JAE
VAR[SI], AX
AX,V AR[SI+2]
AX, V AR[SI+4]
L3
XCHG
AX, V AR[SI+4]
L3:
MOV
VAR[SI+2], AX
4. 编写程序段实现将
AL
和
BL
中的每一位依次交叉,得到的
16 位字保存在
DX
中,例
如( AL )=,(BL )=,则得到的(
DX )=10011001B。
解:利用移位指令完成。
XOR DX,DX
MOV CX,8
L1:
SHR
RCR
AL,1
DX,1
SHR BL,1
RCR DX,1
LOOP L1
5. 在变量 VAR1 和 VAR2 中分别保存有两个字节型的正整数, 编写完整的汇编语言程序实
现:
( 1)当两数中有一个奇数时,将奇数存入 VAR1 ,偶数存入 VAR2 ;
2)当两数均为奇数时,两个变量的内容不变;
3)当两数均为偶数时,两数缩小一倍后存入原处。
解:当
VAR1
为奇数时,不论
VAR2
的奇偶性,这两个单元的内容均不变;只有当
VAR1
为偶数时,如果
VAR2
为奇数,则
VAR1
与 VAR2
内容交换;如果
VAR2
为偶数,则两数缩
小一倍后存入原处。
DATA
SEGMENT
VAR1
DB 28
VAR2
DB 36
DATA
ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DA TA
START:
MOV
AX, DA TA
MOV
DS,AX
MOV
ES, AX
MOV
AL,VAR1
MOV
BL,V AR2
TEST
AL,1
JZ
EVEN1
JMP
OVER
EVEN1:
TEST
JZ
MOV
BL,1
EVEN2
VAR1,BL
MOV
JMP
VAR2,AL
OVER
EVEN2:
SHR
MOV
SHR
MOV
AL,1
VAR1,AL
BL,1
VAR2,BL
OVER:
CODE
MOV MOV INT ENDS END
AH,4CH
AL,0
21H
START
已知在字变量 VAR1 、 VAR2 和 VAR3 中保存有 3 个相同的代码,但有一个错码,编写
程序段找出这个错码,并将它送到 AX ,其地址送 SI;如果 3 个代码都相同,则在 AX
中置- 1 标志。
解:在数据段中定义:
VAR1 DW 5A34H
VAR2 DW 5A35H
VAR3 DW 3A34H
在代码段中编写程序段:
MOV
AX,-1
MOV
BX,V AR1
CMP
BX,V AR2
JZ
L2
CMP
BX,V AR3
JZ
L1
MOV
AX,BX
LEA
SI,VAR1
JMP
OVER
L1:
MOV
LEA
JMP
AX,V AR2
SI,VAR2
OVER
L2:
CMP
JZ
MOV
LEA
BX,V AR3
OVE
原创力文档


文档评论(0)