在TASM中减去向量的元素后显示结果

时间:2013-12-14 19:43:48

标签: assembly x86 dos tasm

我有这个代码来获得我想要的结果,但我无法显示它。我是TASM的新手,所以我不知道如何使用。我查看了一些教程来显示结果但没有找到。请帮忙。

.model small
.286
.stack 100h

.data

vector  db 8,9,5,4,5,6,7     
n       db 7             ; dimensiunea vectorului
scadere db ' ','$'       ; suma elementelor

.code
    mov AX,@data 
    mov DS,AX

    xor SI,SI
    xor CX,CX            ; ne asiguram ca CX are valoarea 0

    mov CL,n             ; copiem in CL dimensiunea vectorului

repeat:                  ; definim eticheta   
    mov AL,vector[SI]
    sub scadere,AL
    inc SI      ; marim valoarea din SI cu 1 pentru a trece la elementul urmator 
    loop repeat ; salt la eticheta cat timp CX diferit de 0

    mov AX,4c00h
    int 21h

end

1 个答案:

答案 0 :(得分:0)

您没有输出结果。

尝试

.model small
.286
.stack 100h

.data

vector  db 8,9,5,4,5,6,7     
n       db 7             ; dimensiunea vectorului
scadere db 'z',13,10,'$'       ; suma elementelor+CR+LF

.code
    mov AX,@data 
    mov DS,AX

    xor SI,SI
    xor CX,CX            ; ne asiguram ca CX are valoarea 0

    mov CL,n             ; copiem in CL dimensiunea vectorului

repeat:                  ; definim eticheta   
    mov AL,vector[SI]
    sub scadere,AL
    inc SI      ; marim valoarea din SI cu 1 pentru a trece la elementul urmator 
    MOV DX,OFFSET SCADERE       ;^message
    MOV AH,9             ;Dos function 9 = output until '$'
    INT 21H              ;execute DOS function
    loop repeat ; salt la eticheta cat timp CX diferit de 0

    MOV DX,OFFSET SCADERE       ;^message
    MOV AH,9             ;Dos function 9 = output until '$'
    INT 21H              ;execute DOS function
    mov AX,4c00h
    int 21h

end

这应该会告诉你。

有一个有用的DOS functions here.

列表

我已将scadere更改为'z',因为您正在减去因此应显示

'z'(7A) - 8 = 'r'(72)
'r'(72) - 9 = 'i'(69)
'i'(69) - 5 = 'd'(64)
'd'(64) - 4 = ''(60)......

将13,10添加到scadere应生成换行符。