有关输入输出的问题
时间:2011-06-05
来源:互联网
Assembly code
上面这段代码的功能是用地址表传递参数,实现数组ARRAY单元的累加,想问一下,如何将最终的累加结果输出呢?
注释中写道mov [di],ax是将结果保存到result中,我想的是在执行完调用子程序的指令也就是在CALL SUM_PROC后加入以下代码mov ax,[di],add ax,30h, mov dl,ax,mov ah,2,int 21h。。。。不过好像不行
感觉问题可能出在ascii码转数值或者寄存器的某些问题上,希望大家指教
还有个问题也是有关输入输出的,就是如果通过10号功能输入,如何将所输入的字符转为相应的数值
DATA SEGMENT ARRAY DW 21,22,23,24,25,26,27 COUNT DW ($-ARRAY)/2 RESULT DW ? ADDRESS DW 3 DUP(0) ;定义地址表 DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ADDRESS,OFFSET ARRAY ;将ARRAY地址存入地址表 MOV ADDRESS+2,OFFSET COUNT ;将COUNT地址存入地址表 MOV ADDRESS+4,OFFSET RESULT ;将RESULT地址存入地址表 MOV BX,OFFSET ADDRESS ;将地址表地址装入BX CALL SUM_PROC ;调用求和子程序 MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H SUM_PROC PROC PUSH AX ;将子程序中用到的寄存器入栈保护 PUSH BX PUSH SI PUSH DI MOV SI,[BX] ;将ARRAY地址取出,存入SI MOV DI,[BX+2] ;将COUNT地址取出,存入DI MOV CX,[DI] ;将COUNT内容取出,存入cx作计数器 MOV DI,[BX+4] ;将RESULT地址取出,存入DI XOR AX,AX ;AX初始化 LOP: ADD AX,[SI] ;累加 ADD SI,2 ;修改指针,指向下一单元 LOOP LOP MOV [DI],AX ;将结果保存到RESULT中 POP DI ;恢复寄存器 POP SI POP CX POP AX RET ENDP ENDS END START
上面这段代码的功能是用地址表传递参数,实现数组ARRAY单元的累加,想问一下,如何将最终的累加结果输出呢?
注释中写道mov [di],ax是将结果保存到result中,我想的是在执行完调用子程序的指令也就是在CALL SUM_PROC后加入以下代码mov ax,[di],add ax,30h, mov dl,ax,mov ah,2,int 21h。。。。不过好像不行
感觉问题可能出在ascii码转数值或者寄存器的某些问题上,希望大家指教
还有个问题也是有关输入输出的,就是如果通过10号功能输入,如何将所输入的字符转为相应的数值
作者: ryusonfrex 发布时间: 2011-06-05
这是一段显示十进制的子程序,结果在DX里
Assembly code
Assembly code
disp proc mov ax,dx xor dx,dx mov bx,10 mov cx,0 d1: cmp ax,10 jb ok div bx add dl,30h push dx xor dx,dx inc cx jmp d1 ok: add al,30h push ax inc cx d2: pop dx mov ah,2 int 21h loop d2 ret disp endp
作者: masmaster 发布时间: 2011-06-05
请问累加后结果是保存在[DI]中吗?我现在不太明白这之间的寄存器是如何相互调用存储的
作者: ryusonfrex 发布时间: 2011-06-05
你累加后的结果其实是以二进制数形式存储的,要将他转化为十进制输出,可以用div指令将你累加后的结果 1:除以100,得到商和余数分别存放在DX,AX中,将商(结果肯定是0~9)加上30h转化为其对应的ascii码,然后输出(也就是累加结果对应的百位),2:将1中得到的余数除以10,在按1的步骤输出(十位),3:将2中得到的余数直接加上30h,输出,也就得到各位。
作者: hachorse 发布时间: 2011-06-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28