异业联盟hbsharing:关于汇编的两道题

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 10:01:10
1、计算一个32位有符号的绝对值,32位有符号放AX、BX中,其绝对值放CX、DX中,其中AX、CX高位。
2、编写程序,用16位寄存器实现64位数据的加减运算。

1、计算一个32位有符号的绝对值,32位有符号放AX、BX中,其绝对值放CX、DX中,其中AX、CX高位。

关键部分如下:(段定义、结束环节省略掉了,如果需调试,自己要补上)

CLC
TEST AX,8000H
JZ L1
NOT BX
ADD BX,01H
MOV DX,BX
NOT AX
ADC AX,00H
MOV CX,AX
JMP L2
L1: MOV DX,BX
MOV CX,AX
L2: ……

2、编写程序,用16位寄存器实现64位数据的加减运算。

关键部分如下:(段定义、结束环节省略掉了,如果需调试,自己要补上)

假设数据段中有如下定义,高位放在高地址单元:
DATA DW 2310H,4321H,6350H,2530H ;2530H为高位
DATAB DW 2130H,2456H,3514H,6541H
DATAC DW 4 DUP(?)

①64位数据的加运算:

MOV AX,DATA
ADD AX,DATAB
MOV DATAC,AX

MOV AX,DATA+1
ADC AX,DATAB+1
MOV DATAC+1,AX

MOV AX,DATA+2
ADC AX,DATAB+2
MOV DATAC+2,AX

MOV AX,DATA+3
ADC AX,DATAB+3
MOV DATAC+3,AX

②64位数据的减运算:

MOV AX,DATA
SUB AX,DATAB
MOV DATAC,AX

MOV AX,DATA+1
SBB AX,DATAB+1
MOV DATAC+1,AX

MOV AX,DATA+2
SBB AX,DATAB+2
MOV DATAC+2,AX

MOV AX,DATA+3
SBB AX,DATAB+3
MOV DATAC+3,AX