微机填空程序调试.docVIP

  • 9
  • 0
  • 约1.15万字
  • 约 19页
  • 2017-06-06 发布于湖北
  • 举报
加减法参考程序 DATA SEGMENT PARA PUBLIC ‘DATA’ 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,AX MOV AX,0000 MOV DX,0000 MOV SI,2050H MOV DI,2150H MOV BP,2250H MOV WORD PTR[SI],0205H MOV WORD PTR[DI],0408H MOV WORD PTR[BP],0109H MOV AL, … ;送被加数低8位 ;低8位相加 ;加法ASCII调整MOV DL,AL ; DL= MOV AL,[SI+1] ;AL= … ;带进位加 ;加法ASCII调整 ;AL与DL交换 ;和的低8位减减数的低8位 ;减法ASCII调整 ;AL与DL交换,存低8位结果 ;高8位带进位减 ;减法ASCII调整MOV DH,AL ;DH= RET START ENDP CODE ENDS END START 16进制到ACII码参考程序 name HEXASC data segment para public data hex dw 0h asc 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,ax mov cx,0004h mov ax, … ;取十六进制数0ebf9h lea bx,asc aa: push cx … ;给循环计数器赋转换代码长度 … ;十六进制数循环左移 push ax and ax,000fh ;AX= ;AX= AX= ;AX= cmp al, … ;判别是否为“0~9” … ascii ;是“0~9”转ascii add al,07hascii: add al,30h ;al = ;al = al= ;al = loop aa ret start endp code ends end start ACII码到BCD码参考程序 ,ES:DATA,SS:STACK START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,05H ? 0; DI= ,[DI]= ……. ASCII首址送DI … ; SI= , BCD首址送SI BB: MOV BL,0FFH MOV AL,[DI] ;AL= … ;检查是否为大于9的ASCII码 … ;是转DONE … ;AL= ,[DI]= 不是,取ASCII码低4位 … ; 小于0的十进制数,转DONE MOV BL,AL DONE: MOV AL,BL ; AL= ,[DI]= MOV [SI],AL ;[SI]= … ;指针加1 … ;指针加1 … ;(CX)不为0,转BB RET [160H]=....... ST

文档评论(0)

1亿VIP精品文档

相关文档