资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
加减法参考 程序DATADATASEGMENTENDSPARAPUBLICDATASTACKSEGMENTPARASTACKSTACKDB512 DUP (?)STACKENDSCODESEGMENTPARAPUBLICCODEASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,0000MOV DX,0000MOV SI,2050HMOV DI,2150HMOV BP,2250HMOV WORD PTRSI,0205HMOV WORD PTRDI,0408HMOV WORD PTRBP,0109HMOVAL, ;送被加数低 8 位;低 8 位相加;加法 ASCII 调整AL=AL=AL=,AH=,AH=,CF=,CF=MOVDL,AL; DL=MOVAL,SI+1;AL=;带进位加;AL=,CF=;加法 ASCII 调整AL=,AH=,CF=;AL 与 DL 交换AL=,DL=;和的低 8 位减减数的低 8 位AL=;减法 ASCII 调整AL=,AH=,CF=;AL 与 DL 交换,存低 8 位结果AL=,DL=;高 8 位带进位减AL=;减法 ASCII 调整 AL=,AH= ,CF=MOVDH,AL;DH=RETSTART ENDP CODE ENDSEND START乘法参考 程序DATASEGMENT PARAPUBLICDATADATAENDSSTACKSEGMENT PARASTACKSTACKDB512 DUP (?)STACKENDSCODESEGMENT PARAPUBLICCODEASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTPROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVAX,0MOVBX,0MOVDI,223AHMOVSI,2230HMOVAL,04HMOVBL,06H;相乘, AL= , CF=;调整, AH= ,AL=MOV WORD PTR DI,AXMOV AL,03H;被乘数高8位乘以乘数低8位;调整; 部分积相加;调整MOV WORD PTR DI+1,AXMOV AL,04HMOV BL,05H; 相乘;调整MOV WORD PTRSI,AXMOV AL, 03HMUL BL;调整; 部分积相加;调整MOV WORD PTR SI+1,AXMOV AL,DIMOV BP,2240HMOV BP,ALMOV AL,DI+1;部分积相加;调整MOV BP+1,ALMOV AL,DI+2;部分积相加;调整MOV BP+2,ALMOV AL,0;部分积相加;调整MOV BP+3,ALRET START ENDP CODE ENDS END START16 进制到 ACII 码参考程序name HEXASC data segment para public data hexdw 0A5E9hasc db 20 dup(0) data ends stack segment para stack stack db 512 dup (?) stack ends code segment para public code assume cs:code,ds:data, es:data,ss:stack start proc far push ds mov ax,0 push ax mov ax,data mov ds,ax mov es,axmov cx,0004hmov ax,lea bx,asc; AX=, 取十六进制数 0ebf9haa:push cx;给循环计数器赋转换代码长度;AX=, 十六进制数循环左移push axand ax,000fh;AX=;AX= AX=;AX=cmp al, ;判别是否为 “ 09” ascii;是 “ 09转” asciiadd al,07hascii: add al,30h;al = ;al = al= ;al =pop axpop cxloop aaretstart endpcode endsend startACII 码到 BCD 码参考程序NAME ASCBCDDATA SEGMENT PARA PUBLICDATAORG 0150HDATA1 DW 3538H,4237H,3946H,3639H,3642HORG 0160HDB 10 DUP(?)DATA ENDSSTACK SEGMENT PARA STACKSTACKDB 512 DUP(?)STACK ENDSCODE SEGMENT PARA PUBLICCODEASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,05H;DI= ,DI=ASCII 首址送 DI;SI= , BCD首址送SIBB:MOV BL,0FFHMOV AL,DI;AL=;检查是否为大于9 的 ASCII 码;是转 DONE;AL= ,DI= 不是,取 ASCII 码低 4 位 ; 小于 0 的十进制数,转 DONEMOV BL,ALDONE:MOV AL,BLMOV SI,AL; AL=;SI=,DI=;指针加 1;指针加 1RET;(CX) 不为 0,转 BB160H=START ENDPCODE ENDSEND STARTBCD码二进制参考程序NAME BCD2DATA SEGMENTORG 0180HDAT1 DW 0802H,0103H,0009H,0706H,0407HORG 0190HDAT2 DB 10 DUP(?)DATA ENDSSTACK SEGMENT PARA STACKSTACKDB 512 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AX;循环计数器赋转换代码长度XL:;BCD 码首址送 DI ;二进制首址送 SI ;BCD 码十位数值赋 ALMOV MUL INCMOVBL,0AHBLDIAH,00H;乘 10;BCD 码十位和个位相加,转换结束;转换结果存二进制起始地址INC DIINC DIINC SILOOP XLRETSTART ENDPCODE ENDSEND START查表处理参考程序;(CX)不为0转AADATA SEGMENTLIST DW 12,11H,22H,33H,44H,55H,66H,77H,88H,99H,111H,222H,333H DATA ENDSCODE SEGMENTPROC FARCS:CODE,DS:DATA,ES:DATADEL_UL ASSUME MAIN: PUSH DSSUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX, .CLD LEA DI, PUSH DI MOV CX,ES:DIADD DI,2 SCASW DELETE JMP SHORT EXIT DELETE: DEC_CNT NEXT_EL:MOV BX,ES:DIMOV ES:DI-2,BX ADD DI,2 LOOP NEXT_EL DEC_CNT: POP DI DEC WORD PTR ES: EXIT: RET DEL_UL ENDP CODE ENDS END MAIN;AX=; DI= ,DI=;CX=; AX= ,DI=; 字符相同转移;CX 寄存器内容为 ;BX= , ; (DI-2)=取得数据区首地址,DI-2= 字符串比较0 则到数据区尾转结束DI-2, (DI )=DI ;(0H)=分支与循环 参考程序DATA SEGMENTORG 200HARRAY DW 56H,12H,-6790H,0,78H,0H,-1H,0H,3000H,90HDATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART:PUSH DSMOVAX,0PUSH AXMOV AX,DATA MOV DS,AXMOV CX,MOV BX,0MOV DI,BXMOV SI,BXAGAIN:MOV AX,BX LEQINC DIJMP SHORT NEXTLEQ: NEXTINC SINEXT:ADD BX,2 LOOP AGAIN MOV AX,10;CX= 循环计数器赋转换代码长度;BX= 字数组首址送 BX;与 0 比较;小于或等于 0 转 ;AX=,DI=;小于 0 转;AX= ,SI=;字数组长度减负数; AX= 字数组长度减负数再减零RETMAIN ENDPCODE ENDSEND START 排序参考程序DATA SEGMENTDW 10,1234H,2345H,3
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号