ZKX's LAB

汇编语言实现两个双字节数相加 汇编实现两位数相加的原理

2021-04-26知识12

汇编语言怎么实现两个 5位数相加? data segmentx db 5 DUP?y db 5 DUP?z db 5 DUP?z是和data endsend start

汇编语言怎么实现两个 5位数相加? data segmentx db 5 DUP?y db 5 DUP?z db 5 DUP?z是和data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,ax;输入第一个五位数-mov cx,5;循环5次mov si,0;f1:mov ah,1;输入int 21hsub al,30h;mov x[si],alinc siloop f1显示“+”*mov dl,43mov ah,2int 21h输入第二个五位数-mov cx,5mov si,0f2:mov ah,1int 21hsub al,30hmov y[si],alinc siloop f2显示“=”*mov dl,61mov ah,2int 21h求和-clc;mov cx,5mov si,4f3:mov al,x[si]adc al,y[si]aaamov z[si],aldec siloop f3jc s1jmp f4s1:mov dl,31hmov ah,2int 21h显示-f4:mov cx,5mov si,0f5:mov al,z[si]add al,30hmov dl,almov ah,2int 21hinc siloop f5mov ah,4chint 21hcode endsend start

用汇编语言实现从键盘输入两个2位数并进行相加,最后输出结果 DATAS SEGMENT;数据段DATA1 DB 31H,32H,38H,34H,37H;定义DATA1为被加数DATA2 DB 34H,35H,39H,37H,31H;定义DATA2为加数DATAS ENDSSTACKS SEGMENT;堆栈段STA DB 64 DUP(0);(伪指令)为STA预留64个字节的存储空间SP_TOP DB 0;定义SP_TOP单元的数值为0STACKS ENDSCODES SEGMENT;代码段ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;设置数据段MOV AX,STACKSMOV SS,AX;设置堆栈段LEA SP,SP_TOP;设置栈顶指针MOV SI,OFFSET DATA1;把DATA1偏移量地址赋予SIMOV BX,05;CALL DISPL;显示被加数CALL CRLF;回车、换行MOV SI,OFFSET DATA2;把DATA2偏移量地址赋予SIMOV BX,05;CALL DISPL;显示加数CALL CRLF;回车、换行MOV DI,OFFSET DATA1;把DATA1偏移量地址赋予DICALL ADDA;调用ADDA子程序,实行加法运算MOV BX,05;CALL DISPL;显示结果CALL CRLF;回车、换行MOV AX,4C00H;INT 21H;调用DOS21H功能,CRLF PROC NEAR;回车、显示功能过程定义,属性为NEARMOV DL,0DH;把回车的ASCII码0DH传给DLMOV AH,02H;送DOS 的中断调用功能号INT 21H;DOS 的中断调用MOV DL,0AH;把换行的ASCII码0AH传给DLMOV AH,02H;送DOS 的中断。

#汇编实现两位数相加的原理

随机阅读

qrcode
访问手机版