王爽

王爽汇编实验(九)

我与影子孤独终老i 提交于 2019-12-05 10:47:44
任务:在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'welcome to masm!' 1 assume cs:codesg,ds:datasg,ss:stack 2 3 datasg segment 4 db 'welcome to masm!' 5 datasg ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 codesg segment 12 13 start:mov ax,datasg 14 mov ds,ax 15 mov ax,0B800h 16 mov es,ax 17 mov bx,0 18 mov ax,stack 19 mov ss,ax 20 mov sp,16 21 s: 22 mov cx,16 23 mov si,0 24 s1: 25 mov al,ds:[bx] 26 mov byte ptr es:[380h+si],al 27 mov byte ptr es:[381h+si],2H 28 add si,2 29 inc bx 30 loop s1 31 mov cx,16 32 mov si,0 33 mov bx,0 34 s2: 35 mov al,ds:[bx] 36 mov byte ptr es:[420h+si],al 37 mov byte ptr es:

王爽汇编实验(八)

流过昼夜 提交于 2019-12-05 08:29:33
分析下面的程序,在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么时这种结果? 通过这个程序加深对相关内容的额理解。 assume cs:codesg codesg segment mov ax,4c00h int 21h start:mov ax,0 s:nop nop mov di,offset s mov si,offset s2 mov ax,cs:[si] mov cs:[di],ax s0:jmp short s s1:mov ax,0 int 21h mov ax,0 s2:jmp short s1 nop codesg ends end start 初看时到s1,然后是返回中止? 不多说,运行分析 是从start开始的指令,与想法没错,end start告诉了masm那里是入口 JMP 0008是S的标号地址,后来JMP 0000 这样一来发现了原本的IP是0005,是前面两个返回语句,是直接略过的 jmp 0008下一条是jmp0000,nop执行后分配90H机器码空间,跳转到codesg 结束 来源: https://www.cnblogs.com/otakus/p/11878693.html

王爽汇编实验(七)

女生的网名这么多〃 提交于 2019-12-04 18:26:42
assume cs:code,ds:data,es:table data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' ;以上是表示21年的字符串 4 * 21 = 84 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;以上是表示21年公司总收入的dword型数据 4 * 21 = 84 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;以上是表示21年公司雇员人数的21个word型数据 2 * 21 = 42 data ends table segment db 21 dup ('year summ ne ?? ') ; 'year

王爽汇编实验(六)

隐身守侯 提交于 2019-12-04 16:26:08
assume cs:codesg,ss:stacksg,ds:datasg stacksg segment dw 0,0,0,0,0,0,0,0 stacksg ends datasg segment db '1. display '//到16字节 db '2. brows '//到16字节 db '3. replace '//同上 db '4. modify '//同上 datasg ends codesg segment start:???????????????????????????????????????????????????? codesg ends end start 完成7.9程序 mov ax,stacksg mov ss,ax mov sp,16 mov ax,datasg mov ds,ax mov bx,3 mov cx,4 s0:push cx mov si,0 mov cx,4 s:mov al,[bx+si] and al,11011111 mov [bx+si],al inc si loop s add bx,16 pop cx loop s0 mov ax,4c00h int 21h 来源: https://www.cnblogs.com/otakus/p/11874211.html

王爽汇编实验(五)

狂风中的少年 提交于 2019-12-04 15:53:28
将下面的程序编译、连接,用Debug加载、跟踪,然后回答问题。 assume cs:code,ds:data,ss:stack data segment dw 0123h,0456h,0789h,0abch,0def,0fedh,0cbah,0987h data ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start:mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start ① cpu执行程序,程序返回前,data段中的数据为多少? 不必执行,将前两个data段的值相反 ② cpu执行程序,程序返回前,cs=076C、ss=076B、ds=076A、。 ③ 设程序加载后,code段的段地址为X,则data段的段地址为X-20H,stack段的段地址X-10H。 (2)将下面的程序编译、连接,用Debug加载、跟踪,然后回答问题 ① cpu执行程序,程序返回前,data段中的数据为多少? 相反 ② cpu执行程序,程序返回前,cs=076C、ss=076B、ds=076A、。 ③

王爽汇编实验(三)

只谈情不闲聊 提交于 2019-12-04 04:26:56
王爽汇编浅显易懂,虽然前面两个实验都做完了,但是都是吊儿郎当做完的。 看到第三次实验比较好写心得,就写了。 原码如下,用提到的LINK.EXE和MASM.EXE进行编译链接操作。 assume cs:codesg codesg segment mov ax,2000H mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00H int 21H codesg ends end 首先是用debug 跟踪t1.exe执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。 程序即将开始运行,这时候给出了下一条指令 mov ax,2000H 这时候ax至FFFF,DS和CS差10H,IP偏移地址为0。 输入t执行,可以看到ax已经变成2000H了,因为是寄存器和立即数,所以占3个字节,IP变成0003,其他未变。 继续t执行。 ss变成了ax内存放的2000H。中间原本有一行指令 mov sp,0但是因为debug的对栈操作,直接在mov ss,ax后立刻执行,所以下一条语句是add sp,10 sp变成了000AH 因为pop的缘故,栈向上增长,sp增加了2字节,变成000CH 同理sp=000EH,这时候发现了AX从2000H变成了0000H,因为栈本来就是空的

《汇编语言》王爽——实验7

[亡魂溺海] 提交于 2019-12-03 05:23:43
1 assume cs:code, ds:data, es:table, ss:stacks 2 3 data segment 4 ;年份 5 db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983' 6 db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992' 7 db '1993', '1994', '1995' 8 ;收入 9 dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514 10 dd 345980, 590827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000 11 ;员工 12 dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 13 dw 11542, 14430, 15257, 17800 14 data ends 15 16 table segment 17 db 21 dup ('year

王爽《汇编语言》实验16

匿名 (未验证) 提交于 2019-12-03 00:28:02
assume cs:code,ss:stack stack segment db 128 dup (0) stack ends ;===============install new int7ch code segment start: mov ax,code mov ds,ax mov si,offset newint7ch mov ax,0 mov es,ax mov di,200h mov cx,offset newint7ch_end-offset newint7ch cld rep movsb cli mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0 sti ;-------------------------tset newint7ch mov ah,0 int 7ch call delay mov ah,1 mov al,2 int 7ch call delay mov ah,2 mov al,6 int 7ch call delay mov ah,3 int 7ch call delay mov ax,4c00h int 21h delay: push ax push dx mov dx,50h mov ax,0 delays: sub ax,1 sbb dx,0 cmp ax,0 jne delays

汇编语言学习:使用王爽写的《汇编语言》第三版(编程环境配置)

匿名 (未验证) 提交于 2019-12-02 23:43:01
汇编语言学习 参考书: 使用王爽写的《汇编语言》第三版 学习工具(win7 x64): 另外需要一款编辑器,用来编辑源程序,推荐sublime text。需要到这里下载支持汇编语法高亮的插件: https://github.com/Nessphoro/sublimeassembly 目录介绍 学习工具 :包含win7 64位下需要的工具:DOSBox 0.74安装包、masm.exe、link.exe、debug.exe experiment.asm :参考书上面的练习与实验(不全,但需要的代码都在里面) 64位windows7下DOSBox使用方法: step1: 新建文件夹(下面以 C:\coding\assembly-language-learning 为例) step2: 将 debug.exe 、 masm.exe 、 link.exe 放到 C:\coding\assembly-language-learning 文件夹下 step3: 打开DOSBox。这里可以看到Z:\DOSBox里的虚拟盘,我们采用mount命令将其转变到 C:\coding\assembly-language-learning 目录下,如果只是用这一次,可以直接在命令行中输入如下命令: Z:\> mount d C:\coding\assembly-language-learning Z:\>

汇编语言-第三版-王爽-课程设计

匿名 (未验证) 提交于 2019-12-02 23:43:01
课程设计1(p211)、 课程设计1(p211) # 执行结果 # code ; DATE: 20190614 ; DESCRIPTION: 在屏幕上按格式显示数据 assume cs:code data segment db 16 dup (0) ; 用于临时保存数据转字符串的结果 ; 年份 db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983' db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992' db '1993', '1994', '1995' ; 收入 dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97497, 140417, 197514 dd 345980, 590827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000 ; 雇员 dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 dw 11542, 14430, 15257,