王爽 汇编 实验10.1

一、实验要求

二、代码实现

 1 assume cs:code,ds:data
 2
 3 data segment
 4     db ‘welcome to masm!‘,0
 5 data ends
 6
 7 code segment
 8 start:      mov dh,8            ;定义行(0-24)
 9             mov dl,3            ;定义列(0-79)
10             mov cl,2            ;定义颜色
11             mov ax,data
12             mov ds,ax
13             mov si,0            ;指向字符串的首地址
14             call show_str        ;调用子程序
15
16             mov ax,4c00h
17             int 21h
18
19 show_str:   push cx
20             push si
21
22             mov al,0A0h            ;每一行160个字节
23             dec dh                ;行号从0开始,需要减去1
24             mul dh                ;求出行的偏移量(结果存放到了ax中)
25             mov bx,ax            ;将行偏移量暂存到寄存器bx中
26
27             mov al,2             ;一个数据2个字符,包含数据和颜色属性
28             dec dl                ;列号从0开始,需要减去1
29             mul dl                ;求出列偏移量(结果存放到了ax中)
30
31             add bx,ax            ;行和列的偏移量加在一起,就是该字符串首地址在显存中的偏移地址
32
33
34             mov ax,0b800h        ;显存段地址
35             mov es,ax            ;显存段地址保存到es寄存器中
36
37
38             mov di,0             ;显存中传递列值
39             mov ch,0
40             mov al,cl            ;颜色数据保存到ax寄存器低位中
41
42 s:          mov cl,ds:[si]        ;传递数据
43             jcxz ok                ;至到原始数据偏移到数据0的时候,表明所有原始数据已处理完成
44                                   ;然后跳转到标号ok
45
46             mov es:[bx+di],cl      ;传递数据
47             mov es:[bx+di+1],al    ;传递颜色
48
49             inc si                ;每处理一个字节,偏移地址自增1
50             add di,2              ;每处理二个字节(包含一个数据和一个颜色属性),偏移地址自增2
51             jmp short s
52
53 ok:         pop si
54             pop cx
55             ret
56 code ends
57 end start

三、实验结果

原文地址:https://www.cnblogs.com/TonyJia/p/12605503.html

时间: 2024-11-10 13:15:19

王爽 汇编 实验10.1的相关文章

王爽汇编实验九

1 ;实验九 2 assume cs:code,ds:data 3 data segment 4 db 'welcome to masm!' 5 data ends 6 7 code segment 8 start : 9 mov ax,data 10 mov ds,ax;定义数据段 11 12 mov ax,0B800h 13 mov es,ax;定义显示段 14 15 mov cx,16 16 mov si,0 17 mov di,10*160+80 ;将输出显示放在第10行中间 18 19

王爽汇编实验十一

;实验11 ;把小写字母换成大写字母 assume cs:code , ds:data data segment db "Beginner's All-purpose Symbolic Instruction Code.",0 data ends code segment start: mov ax,data mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h letterc: push ax push si fun: mov al

王爽汇编实验(三)

王爽汇编浅显易懂,虽然前面两个实验都做完了,但是都是吊儿郎当做完的. 看到第三次实验比较好写心得,就写了. 原码如下,用提到的LINK.EXE和MASM.EXE进行编译链接操作. assume cs:codesgcodesg segmentmov ax,2000Hmov ss,axmov sp,0add sp,10pop axpop bxpush axpush bxpop axpop bx mov ax,4c00Hint 21Hcodesg endsend 首先是用debug 跟踪t1.exe执

王爽 汇编 检测点10.4

一.要求 二.上机调试 1.debug调试开始,首先查看反编译后的汇编代码(假设ob38就是段地址1000) 2.执行第一条指令mov ax,6 3.执行第二条指令call ax,也就是call 6(我们知道,对于call 16位reg格式来说,相当于push ip:jmp 16位reg.) 执行了call ax,会将它的下一条指令的压入栈中也就是5压入栈中,软后跳转到ip=6的地方 此时ip=6 ,sp=fffe,查看栈中的数据 4.执行mov bp,sp,栈顶地址赋值给bp寄存器 5.执行a

王爽汇编 实验13

1. assume cs:code data segment db 'welcome to masm! ',0 data ends code segment start: mov ax,cs mov ds,ax mov si,offset capital mov ax,0 mov es,ax mov di,200h mov cx,offset capitalend-offset capital cld rep movsb mov ax,0 mov es,ax mov word ptr es:[7

王爽汇编10.12

;10.12 assume cs:code,ds:data data segment db 'word',0 db 'unix',0 db 'wind',0 db 'good',0 data ends code segment start : mov ax,data mov ds,ax mov si,0 mov di,16 mov cx,4 s: call cap inc si loop s MOV AX,4C00H INT 21H cap: push cx tip: mov cl,[si] m

跟我学汇编(二)王爽汇编环境搭建

这一次我们来讲解一下如何在window上搭建一个王爽教材中所用的汇编环境.王爽的书中用的是8086CPU,现在的CPU肯定是不一样啦,所以我们使用虚拟机来模拟一下. 一.下载系统 我们采用MS-DOS7.10系统,这里我提供一个免费的下载地址http://download.csdn.net/detail/xingjiarong/9428514,上次我看到了一个哥们的环境搭建过程,搭建好系统下载竟然要5个积分,我一气之下就自己动手搭建一个.这里下载之后是一个DOS的IOS文件,下面我们就来安装这个

汇编语言(王爽)实验

实验10 1 ;name: show_str 2 ;func: 在指定的位置,用指定的颜色,显示一个用'0'结束的字符串 3 ;argc: (dh)=行号(取值范围0~24), (dl)=列号(取值范围0~79) 4 ; (cl)=颜色, ds:si指向字符串的首地址 5 ;return: None 6 assume cs:code 7 data segment 8 db 'Welcome to masm!', 0, 'x' 9 data ends 10 11 code segment 12 s

王爽汇编第三版实验10

1. 显示字符串 1 assume cs:code 2 3 data segment 4 db 'Welcome to masm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 15 mov cl,2 16 mov ax,data 17 mov ds,ax 18 mov si,0 19 call show_str