如何使用ADC组装? [英] How do I use ADC in assembly?

查看:185
本文介绍了如何使用ADC组装?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.MODEL SMALL
.STACK 1000
.DATA

MSGA DB 13,10,"Input first number: ","$"
MSGB DB 13,10,"Input second number:","$"
MSGC DB 13,10,"The sum is: ","$"

NUM1 db ?
NUM2 db ?
NUM3 db ?

.CODE

MAIN PROC NEAR

MOV AX, @DATA
MOV DS, AX

; get first number
LEA DX, MSGA
MOV AH, 09h
INT 21h

MOV AH, 01
INT 21H
SUB AL, '0'

MOV BL, AL

MOV AH, 01
INT 21H
SUB AL, '0'

MOV CL, AL

; get second number
LEA DX, MSGB
MOV AH, 09h
INT 21h

MOV AH, 01
INT 21H
SUB AL, '0'

MOV DL, AL

MOV AH, 01
INT 21H
SUB AL, '0'

MOV DH, AL

; add
ADD CL, DH 
ADC BL, DL
MOV NUM1, CL
ADD NUM1, '0'
MOV NUM2, BL
ADD NUM2, '0'

; output sum
LEA DX, MSGC
MOV AH, 09h
INT 21h

MOV DL, NUM2
MOV AH, 02H
INT 21h

MOV DL, NUM1
MOV AH, 02H
INT 21h

MOV AH, 4Ch
INT 21h

MAIN ENDP
END MAIN

以上是我的code在装配添加2两位数。我不知道为什么ADC不起作用。如果加在个位数字没有获得进位,我的code工作。而不是其他。我误解了什么ADC确实?我应该怎么做我的code?

Above is my code for adding 2 two-digit numbers in assembly. I wonder why the ADC doesn't work. If the ones digits don't obtain a carry when added, my code works. But not otherwise. Did I misunderstand what the ADC really does? What should I do with my code?

推荐答案

您似乎与十进制数学一起工作,但你不使用 AAA ADC 做你所期望的,但与code从来就没有从第一次加入一个实际的进位(9 + 9是不是比255大,毕竟)。

You appear to be working with decimal math, but you're not using AAA. ADC does what you'd expect, but with that code there is never an actual carry from the first addition (9+9 is not bigger than 255, after all).

因此​​,解决办法,当然是使用 AAA ,像这样(未测试):

So the solution, of course, is to use AAA, like this (not tested):

add al,dl
aaa        ; takes no arguments and works on al
add ah,dh  ; adc not necessary, aaa already incremented ah if there was a carry

AAA ASCII调整增加)测试比9大,如果是这样:

AAA (ASCII Adjust for Addition) tests if al is bigger than 9, and if so:


  • 调整

  • 设置进位标志,和

  • 递增

  • adjusts al,
  • sets the carry flag, and
  • increments ah

这篇关于如何使用ADC组装?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆