- 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.9练习题
10、写一个宏定义,要求能把任意一个寄存器的最低位移至另一个存储器的最高位中。
DATA
SEGMENT
XTY
MACRO :
VARI
DB 4,6
MOV
AX,X
VAR2
DD 200DUP(?)
AND
AX,1
DATA
ENDS
ROR
AX,1
MOV
YAX
STACKS
SEGMENT
ENDM
MOV
DX,1
STACKS
ENDS
MOV
AX,0
XTY
DX,AX,
CODES
SEGMENT
MOV
AH,4CH
ASSUME CS:CODES,DS:DATA,SS:STACKS
INT
21H
START:
CODES
ENDS
MOV
AX,DATA
END
START
MOV
DS,AX
11、利用DOS功能调用从键盘输入60个字符到缓冲区BUF中.在按下ENTER键后在屏幕上显示这些字符。请写出程序段。
DATASEGMENT
MOV
[SI],AL
STIDB
Pleaseinput60charactersfrom
CMP
AL,0DH
keyboard.,0DH,0AH,写
JZ
EXIT
BUFDB
61DUP(?)
INC
SI
DATAENDS
LOOP
LP
CODSEGMENT
EXIT:
ASSUME
CS:COD,DS:DATA
MOV
BX,60
START:
SUB
BX,CX
MOV
AX,DATA
MOV
CX,BX
MOV
DS,AX
LEA
SI,BUF
MOV
DLz07H
LP2:
MOV
AH,2
MOV
DLJSI]
INT
21H
MOV
AH,6
MOV
DX,OFFSETSTI
INT
21H
MOV
AH,9
INC
SI
INT
21H
LOOP
LP2
LEA
SI,BUF
MOV
AH,4CH
MOV
CX,60
INT
21H
LP:
COD
ENDS
MOV
AH,7
END
START
INT
21H
12、试写一段程序,要求先给出一声铃响提示,屏幕上显示:^Pleaseinputaalphabets,然后从键盘输入一个字母送BLO
DATASSEGMENT
INT
21H
STIDBPleaseInputa
MOV
DX,OFFSETSTI
alphabet:RDH,OAH「$‘
MOV
AH,9
ST2DB ?
INT21H
DATASENDS
MOV
AH,1
CODESSEGMENT
INT21H
ASSUMECS:CODES,DS:DATAS
MOV
BL,AL
START:
MOV
AH,4CH
MOV AX,DATAS
INT21H
MOV DS,AX
CODESENDS
MOV DLZ7
MOV AH,2
END
START
第五章汇编语言程序设计
例5.1:试用8086CPU的指令实现Y=(XI+X2J/2的程序设计。
DATAS
SEGMENT
MOV
DS,AX
XIDB
34H
MOV
AX,0
X2DB
89H
MOV
AL,X1
YDW
.
MOV
BL,X2
DATAS
ENDS
ADD
AL,BL
ADC
AH,0
STACKS
SEGMENT
SAR
AX,1
STACKS
ENDS
MOV
[Y],AX
CODES
SEGMENT
MOV
AH,4CH
ASSUME
CS:CODES,DS:DATAS,SS:STACKS
INT
21H
START:
CODES
ENDS
MOV
AX,DATAS
END
START
例5.1(老书):编制实现两个三十二位数相乘的程序。
DATASEGMENT
DW
4DUP(?)
MULNUM
DW
1234H
DATA
ENDS
DW
0B8FDH
DW
0DFE6H
COD
SEGMENT
DW
78FFH
ASSUMECS:COD,DS:DATA
START:
MUL
SI ;A*D
MOV
AX,DATA
ADD
AX,[BX+OAH]
MOV
DS,AX
ADC
DXJBX+OCH]
XOR
AX,AX
PUSHF
LEA
BX,MULNUM
MOV
AXJBX+OAH]
MUL32:
MOV
DXJBX+OCH]
MOV
AX,[BX]
XOR
AX,AX
MOV
SIJBX+4]
XOR
DX,DX
MOV
DIJBX+6]
MOV
AXJBX+2]
MUL
SI ;B*d
MUL
DI ;A*C
MOV
[BX+8],AX
POPF
MOV
[BX+OAH],DX
ADC
AXJBX+OCH]
MUL
DI ;B*C
ADC
DX,0
ADD
AX,[BX+OAH]
MOV
[BX+OCH],AX
ADC
DX
文档评论(0)