201913380032许豪第三次实验

一、

截图

 

 源码:

assume cs:code, ds:data

data segment
x db 1, 9, 3
len1 equ $ - x

y dw 1, 9, 3
len2 equ $ - y
data ends

code segment
start:
mov ax, data
mov ds, ax

mov si, offset x
mov cx, len1
mov ah, 2
s1:mov dl, [si]
or dl, 30h
int 21h

mov dl, ' '
int 21h

inc si
loop s1

mov ah, 2
mov dl, 0ah
int 21h

mov si, offset y
mov cx, len2/2
mov ah, 2
s2:mov dx, [si]
or dl, 30h
int 21h

mov dl, ' '
int 21h

add si, 2
loop s2

mov ah, 4ch
int 21h
code ends
end start

问题1:

242个字节
程序运行到loop s1时,指令寄存器IP=001B指向下一条指令,而001B+00F2=010D,高位舍弃,即IP指向000D。
 

问题2:

240个字节。
程序运行到loop s2时,指令寄存器IP=0039指向下一条指令,而0037+00F0=0129,高位舍弃,即IP指向0029。

问题3:

 

 

二、

源码:

assume cs:code, ds:data

data segment
dw 200h, 0h, 230h, 0h
data ends

stack segment
db 16 dup(0)
stack ends

code segment
start:
mov ax, data
mov ds, ax

mov word ptr ds:[0], offset s1
mov word ptr ds:[2], offset s2
mov ds:[4], cs

mov ax, stack
mov ss, ax
mov sp, 16

call word ptr ds:[0]
s1: pop ax

call dword ptr ds:[2]
s2: pop bx
pop cx

mov ah, 4ch
int 21h
code ends
end start

(ax)=0021 (bx)=0026 (cx)=076C

调试截图:

 

三、

源码:

assume cs:code, ds:data

data segment
x db 99, 72, 85, 63, 89, 97, 55
len equ $- x
data ends

stack segment
stack ends

code segment
start:
mov ax, data
mov ds, ax

mov cx, len
mov si, offset x
s: mov ah, 0
mov al, ds:[si]
call printNumber
call printSpace
inc si
loop s

mov ah, 4ch
int 21h

printNumber:
mov bl, 10
div bl
mov dl, al
mov dh, ah
or dl, 30H
mov ah, 2
int 21h

mov dl, dh
or dl, 30H
int 21h
ret

printSpace:
mov ah, 2
mov dl, ' '
int 21h
ret

code ends
end start


截图:

 

四、

源码:

assume cs:code, ds:data

data segment
str db 'try'
len equ $ - str
data ends

stack segment
db 16 dup(0)
stack ends

code segment
start:
mov ax, data
mov ds, ax
mov ax, 0b800h
mov es, ax

mov cx, len
mov si, 0
mov bl, 2
mov bh, 0
mov di, bh
call printStr

mov bh, 24
mov bl, bh
mov bh, 0
mov cx, bx
mov ax, 0
findLastRow:
add ax, 00A0H
loop findLastRow
mov di, ax

mov cx, len
mov si, 0
mov bl, 4
call printStr

mov ah, 4ch
int 21h

printStr:
s:
mov al, ds:[si]
mov ah, bl
mov es:[di], ax
inc si
inc di
inc di
loop s
ret

code ends
end start

截图:

 

五、 

源码:

assume cs:code, ds:data

data segment
stu_no db '201913380032'
len = $ - stu_no
data ends

stack segment
db 16 dup(0)
stack ends

code segment
start:
mov ax, data
mov ds, ax
mov ax, 0b800h
mov es, ax

mov bl, 17H
mov si, 0
call setBgColor

mov bh, 24
mov bl, bh
mov bh, 0
mov cx, bx
mov ax, 0
findLastRow:
add ax, 00A0H
loop findLastRow
mov di, ax

mov al, '-'
mov cx, 34
mov bl, 17H
call printLine

mov cx, len
mov si, 0
mov bl, 17H
call printStr

mov al, '-'
mov cx, 34
mov bl, 17H
call printLine

mov ah, 4ch
int 21h

printStr:
s:
mov al, ds:[si]
mov ah, bl
mov es:[di], ax
inc si
inc di
inc di
loop s
ret

printLine:
s1:
mov al, '-'
mov ah, bl
mov es:[di], ax
inc di
inc di
loop s1
ret

setBgColor:
mov cx, 2000
s2:
mov al, ' '
mov ah, bl
mov es:[si], ax
inc si
inc si
loop s2
ret

code ends
end start

 

截图:

 

posted @ 2021-11-27 21:35  【VC】熬夜不吃饭的兔子  阅读(62)  评论(0)    收藏  举报