- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 算术运算
实验二 算术运算
PAGE \* MERGEFORMAT 8
汇编语言实验报告
(二)
班 级
姓 名: 南 征
学 号:信息与电子学院
实验二 算术运算
实验目的
熟悉利用汇编语言对多精度十六进制和十进制的编程方法,弄清带符号数及不带符号数的运算区别,理解各状态标志位的含义,以及运算结果对各状态标志的影响,掌握无符号数的乘除法运算并保证运算结果不溢出。
实验要点
对汇编语言的算术运算要分清是有符号的运算还是无符号的运算,当对无符号数进行加减时,要考虑进位CF,对于有符号数进行加减时,要考虑运算结果是否溢出。为防止溢出,常将操作数利用CBW或CWD指令进行符号扩展后再进行加减运算。对于多精度的加减运算时,对高位字节或字的加减法要分别采用ADC和DBB;对低位字节或字采用不带进位的加减指令ADD和SUB;在利用循环计算多字节的加减法时,可以用CLC指令将CF初始化为0,然后在循环体内统一使用带进位(或借位)的加减法指令。
在汇编语言进行十进制的加减运算时,首先需将操作数用BCD码示,并且要考虑操作数是用组合的BCD码还是用一个字节表示一个十进制数。对于组合的BCD码加减法,其结果应放在AL寄存器中,再用DAA和DAS指令进行二——十进制调整。二对于未组合的BCD码加减法,用AAA和AAS对结果进行二——十进制调整。此外在进行十进制数减法时,要考虑用大数减小数,因为十进制数运算不能用补码表示。
对于有符号数惩罚要用IMUL指令,对无符号数乘法要用MUL指令。字乘时AX为约定的一个乘数,其积在DX:AX中;字节相乘时AL为约定的一个乘数,其积在AX中。乘法指令中的操作数,不得为立即数,可以为通用寄存器或存储器操作数。
对于除法要用IDIV、DIV分别对有符号数和无符号数进行除法运算。字除法时被除数约定在DX:AX中;字节相除时,被除数约定在AX中,除法指令中的操作数可以为通用寄存器或者存储器操作数,但不得是立即数。在进行除法运算时要考虑除数是否为零,以及其商是否溢出,在出现除零溢出时,将产生类型号为0的内部中断。
实验任务及步骤
在数据段中一缓冲区内存放有无符号数0ABH和78H,64H和54H;试编程求这两组数的和、差,并将结果填入表格:
代码如下:
DATA SEGMENT
DATA1 DB 0ABH, 64H
DATA2 DB 78H, 5AH
COUNT EQU $-DATA2
DATA3 DW 6 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC FAR
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, DATA1
LEA DI, DATA2
LEA BX, DATA3
MOV CX, COUNT
AGAIN1:
XOR AH, AH
MOV AL, [SI]
ADC AL, [DI]
ADC AH, 0
MOV [BX], AX
INC SI
INC DI
INC BX
INC BX
DEC CX
JNZ AGAIN1
LEA SI, data1
LEA DI, data2
MOV CX, COUNT
CLC
AGAIN2:
MOV AL, [SI]
SBB AL, [DI]
MOV [BX], AL
INC SI
INC DI
INC BX
DEC CX
JNZ AGAIN2
MOV AH, 4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
运行结果如下:
0B3E:0000 AB 64 78 5A 23 01 BE 00-33 0A 00 00 00 00 00 00
0B3E:0010 B8 3E 0B 8E D8 8E C0 8D-36 00 00 8D 3E 02 00 8D
0B3E:0020 1E 04 00 B9 02 00 32 E4-8A 04 12 05 80 D4 00 89
0B3E:0030 07 46 47 43 43 49 75 EE-8D 36 00 00 8D 3E 02 00
0B3E:0040 B9 02 00 F8 8A 04 1A 05-88 07 46 47 43 49 75 F3
0B3E:0050 B4 4C CD 21 06 4E 91 00-00 2E C7 06 1A 92 5B 5D
0B3E:0060 2E C7 06 1C 92 7C 3C 2E-C7 06 1E 92 3E 2B 2E C7
0B3E:0070 0
文档评论(0)