1.显示字符串
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,18
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
push cx
push si
push ax
pu...


- [游客] PS:忘记了一点,补充上面的: 因为sp设置为10,所以从20010-10正好等于20006.因为 01/08 22:42
- [游客] 规律很好找,我就debug了一次,只知道在mov ss,ax后会紧跟着执行mov sp,10。在预备 01/08 22:36
- [tomato] 完全同意楼上的观点。 11/21 16:29
- [younggay] 没问题。不过还是那句话,注意注释。注释也是对自己思路的一个整理,也能帮助你对自己的逻辑的审查。 11/21 15:01
- [younggay] 第2题要求用栈来实现,怎么还是跟第一提的回答一样呢? 是博主贴错了,还是....??!!! 11/21 14:21
- [younggay] 最后一题还有一个方法就是,随便添个数,然后编译链接后,debug看加载后的cx值,因为此时cx是这个 11/21 14:15
- [younggay] 一个简便的解决方法是把add sp,4改为add sp,6 ---------- 学到中断在回头 11/21 14:12
- [weicheng] 唉,检测题做了3次才通过,这几道题很熟悉了。 11/21 12:26
- [weicheng] 如果在一起,应该是绿底红色的在中间,其他两个分别在上一行和下一行 11/21 12:04
- [abob] 都对了,博主继续加油啊,马上就冲击三个子程序和课设一了~ 11/20 17:26
[2008-11-21 12:36] 实验10
阅读全文 |
评论次数(2) |
浏览次数(534) |
所属类型(汇编作业)
[2008-11-18 12:31] 检测点10.5
(1)下面的程序执行后,ax中的数值为多少?
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0eh]
inc ax
inc ax
inc ax
mov ax,4c00H
int 21H
code ends
end...
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0eh]
inc ax
inc ax
inc ax
mov ax,4c00H
int 21H
code ends
end...
阅读全文 |
评论次数(2) |
浏览次数(581) |
所属类型(汇编作业)
[2008-11-18 12:07] 检测点10.4
下面的程序执行后,ax中的数值是多少?
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,6
1000:2 ff d0 call ax
1000:5 40 inc ax
1000:6 mov bp,sp
add ax,[bp]
执行ax时,ip的值变为5,执行完程序转到mov bp,sp处。此时栈顶元素的值为5,与ax中的6相加,最终结果为11。...
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,6
1000:2 ff d0 call ax
1000:5 40 inc ax
1000:6 mov bp,sp
add ax,[bp]
执行ax时,ip的值变为5,执行完程序转到mov bp,sp处。此时栈顶元素的值为5,与ax中的6相加,最终结果为11。...
阅读全文 |
评论次数(1) |
浏览次数(407) |
所属类型(汇编作业)
[2008-11-18 12:02] 检测点10.3
下面指令执行后,ax中的数值为多少?
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 9a 09 00 00 10 call far ptr s
1000:8 40 inc ax
1000:9 58 s:pop ax
add ax,ax
pop bx
add ax,bx
执行c...
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 9a 09 00 00 10 call far ptr s
1000:8 40 inc ax
1000:9 58 s:pop ax
add ax,ax
pop bx
add ax,bx
执行c...
阅读全文 |
评论次数(1) |
浏览次数(484) |
所属类型(汇编作业)
[2008-11-18 11:55] 检测点10.2
下面的程序执行后,ax中的数值为多少?
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 e8 01 00 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
执行call时ip的值为6,执行后将ip入栈,即6入栈。然后程序转到标号s处,接着出栈,ax中的值变为6。...
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 e8 01 00 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
执行call时ip的值为6,执行后将ip入栈,即6入栈。然后程序转到标号s处,接着出栈,ax中的值变为6。...
阅读全文 |
评论次数(1) |
浏览次数(399) |
所属类型(汇编作业)
[2008-11-18 11:50] 检测点10.1
补全程序,实现从内存1000:0000处开始执行指令。
assume cs:code
stack segment
db 16 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,1000h
push ax
mov ax,0
push ax
retf
code ends
end start
CPU执行retf指令时,实际的操作相当于pop ip pop cs,因此先将cs入栈,再将ip入栈。...
assume cs:code
stack segment
db 16 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,1000h
push ax
mov ax,0
push ax
retf
code ends
end start
CPU执行retf指令时,实际的操作相当于pop ip pop cs,因此先将cs入栈,再将ip入栈。...
阅读全文 |
评论次数(1) |
浏览次数(377) |
所属类型(汇编作业)
[2008-11-17 10:28] 实验9
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov si,0
mov cx,16
s:
mov al,[bx]
mov es:[160*12+2*32+si],al
mov byte ptr es:[160*12+2*32+si+1],02h...
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov si,0
mov cx,16
s:
mov al,[bx]
mov es:[160*12+2*32+si],al
mov byte ptr es:[160*12+2*32+si+1],02h...
阅读全文 |
评论次数(2) |
浏览次数(527) |
所属类型(汇编作业)
[2008-11-16 20:45] 实验8
分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内的理解。
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...
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内的理解。
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...
阅读全文 |
评论次数(1) |
浏览次数(477) |
所属类型(汇编作业)
[2008-11-16 20:31] 检测点9.3
补全程序,利用loop指令,实现在内存2000H段中查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中。
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
mov ch,0
inc cx
inc bx
loop s
ok:
dec bx
mov dx,bx
mov ax,4c00h
int 21h
code en...
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
mov ch,0
inc cx
inc bx
loop s
ok:
dec bx
mov dx,bx
mov ax,4c00h
int 21h
code en...
阅读全文 |
评论次数(1) |
浏览次数(527) |
所属类型(汇编作业)
[2008-11-16 20:26] 检测点9.2
补全程序,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的编译地址存储在dx中。
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
sub ch,ch
jcxz ok
inc bx
jmp short s
ok:
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start...
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,[bx]
sub ch,ch
jcxz ok
inc bx
jmp short s
ok:
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start...
阅读全文 |
评论次数(1) |
浏览次数(371) |
所属类型(汇编作业)