汇编两个8位无符号数相加

来源:互联网 发布:最新淘宝优惠券 编辑:程序博客网 时间:2024/05/16 14:40
;两个8位无符号数相加;在8086/8088CPU中,只有8位或16位运算指令,没有32位和64位以上的运算指令;要进行64位加法运算,可以利用16位加法指令分别相加4次来实现;这个问题比较简单,无须画程序流程图;该汇编程序的基本框架至少要两个段,即数据段和代码段,数据段中至少定义3个变量,即;两个加数变量N1,N2,还有一个和变量SUM,都是DW(字类型)类型。和变量SUM尚属未知,故应定义一个5个字长(比64位字长大一点的缓冲区)。;因为要加4次,需要一个计数器或指针,可选寄存器BX充当。;由上分析可知,需要MOV,ADD(无符号加法指令),ADC(有符号加法指令),和INC等指令。;SAFE 7 BIT ADDNAME TESTADDDATA SEGMENT                N1 DB 1FH               N2 DB 01H                SUM DB 1 DUP(?)       DATA ENDSSTACK SEGMENTSTACK ENDS                  CODE SEGMENT                ASSUME CS:CODE,DS:DATA,SS:STACKSTART:                      MOV AX,DATA      MOV DS,AX               XOR AX,AX  MOV AL,N1              ADD AL,N2                         PUSH AX               ;"保护现场" AND AL,0F0H           ;低4位清零,高4位不变 MOV CL,4 ROR AL,CL             ;循环右移4位 MOV DL,AL ADD DL,30H CMP DL,39H JBE JUMP1 ADD DL,7JUMP1: MOV AH,2 INT 21H  POP AX                ;"恢复现场"  AND AL,00FH           ;高4位清零,低4位不变 MOV DL,AL ADD DL,30H CMP DL,39H JBE JUMP2 ADD DL,7JUMP2: MOV AH,2 INT 21H  MOV AH,4CH            ;ALSO MOV AX,4C00H INT 21HCODE ENDS END START

0 0
原创粉丝点击