回 帖 发 新 帖 刷新版面

主题:[讨论]在屏幕上输出3+2的结果 能帮忙的过来看一下 谢谢^_^

data segment
num db 02h,03h,'$'
result dw 8 dup(?)
data ends
code segment
     assume cs:code,ds:data
start:mov ax,data
      mov ds,ax
      lea si,num
      lea di,result
      mov bl,[si]
      add bl,[si+1]
      daa
      mov bh,0
      mov ax,bx
      mov [di],ax
      mov dx,[di]
      mov ah,9
      int 21h
      mov ah,4ch
      int 21h
code ends
     end start 
这个是我写的小程序 自己觉得在算法上没有问题 编译连接也都正常通过了

可是在运行的时候 显示的乱码 曾经问过老师 他说是因为计算的结果都是以ASCII码的形式保存在寄存器里 所以要正常输出还要加上一个 ASCII码转换成十进制的子程序调用

请各位看一下这个程序 有错的地方可以帮我指出来 至于怎么输出 还要请教大家
谢谢[em10][em6][em6]

回复列表 (共5个回复)

沙发

T T 帮个忙都不行吗

板凳

请求帮助 高手来 。。。。。怎么还没人啊

3 楼

data segment
num db 2,3
data ends
;
code segment
      assume cs:code,ds:data
start:mov ax,data
      mov ds,ax
      mov dl,num
      add dl,num+1
      add dl,30h
      mov ah,02
      int 21h
      mov ah,4ch
      int 21h
code ends
     end start
不具备通用性,仅供计算2+3,呵呵

4 楼

显示一个字符,用不着9号功能。你的程序没仔细看,但那样使用9号功能(你的程序即便用它,应该构造一个可显示字符串),还有使用加法调整指令是不对的(注意DAA隐含的操作数!)。加减乘除时候最好使用AL、AX寄存器,我的程序之所以使用DL,是为了配合2号功能!
好运!

5 楼

谢谢 谢谢 帮大忙了 对我这个初学者来说 一个程序都是很重要的  谢谢你

我来回复

您尚未登录,请登录后再回复。点此登录或注册