编程序将符号字数组ARRAYW中的正负数分别送入正数数组PLUS和负数数组MINUS,同时把0元素个数送入字变量ZERON中。 stack segment stack 'stack' dw 32 dup (0) stack ends data segment
ARRAYW dw 0,1,2,-2,-3,2,-3,0,4,-5 count ($ - arrayw)/2 PLUS dw 10 dup (0) MINUS dw 10 dup (0) ZERON db 0 data ends code segment begin proc far assume ss:stack,ds:data,cs:code push ds sub ax,ax push ax mov ax,data mov ds,ax mov bx,offset arrayw mov dx,0 mov si,0 mov cx,count push bx sst: pop bx mov ax,arrayw[bx] cmp ax,0 jnz sst2 inc zeron add bx,2 push bx loop sst ret
sst2: add bx,2 push bx js sst3 mov bx,dx mov plus[bx],ax add dx,2 loop sst ret sst3: mov minus[si],ax
add si,2 loop sst1 ret begin endp code ends end begin
(1)写出实验源程序。
(2)画出程序运行后内存中数据段的数据存储示意图。
stack segment stack 'stack' dw 32 dup (0) stack ends data segment BUF DB 58H
OBUF1 DB 0AH,0DH,'(BUF)=' OBUF2 DB 4 DUP(0) data ends code segment begin proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax mov al.buf mov ah,al mov cl,3 shr ah,cl add ah,30h t add al,0fh add al,30h mov obuf2 mov obuf2+1,al mov obuf2+2,'H' mov obuf2+3,'&'
mov dx,offset obuf1 mov ah,9 int 21 ret begin endp code ends end begin
data 58h 58 0Ah ‘30’ 0dh ‘H’ ‘(’ ‘$’ ‘B’ ‘U’ ‘F’ ‘)’ ‘ ’ ‘=’
编写将26个英文字母ABCD??Z存到字
节变量中去的程序。 stack segment stack 'stack' dw 32 dup(0) stack ends data segment ib db 26 dup(0) data ends code segment begin proc far
assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax mov cx,26 mov bx,0 mov al,'a'
a1:mov ib[bx],al inc bx inc al loop a1 ret
begin endp code ends
end begin