sub al,al ZF=1 PF=1 SF=0
mov al,1 ZF=1 PF=1 SF=0
push ax ZF=1 PF=1 SF=0
pop bx ZF=1 PF=1 SF=0
以上都是转移指令,不影响标志寄存器
add al,bl ZF=0 PF=0 SF=0 (al)=1 (bl)=1 执行语句后,(al)=2 非0、奇数个1、非负
add al,10 ZF=0 PF=1 SF=0 执行语句后,(al)=12 非0、偶数个1、非负
mul al ZF=0 PF=1 SF=0 ...
- [doit] add al,bl ZF=0 PF=0 SF=0 (al)=1 (bl)=1 执行语句后 04/02 11:04
- [younggay] add al,10 ZF=0 PF=0 SF=0 执行语句后,(al)=12 非0、偶数 04/01 16:07
- [doit] 之前的设置确实存在非常严重的问题,感谢 crazyman的指点。 开始那个程序在table段只申请 03/31 17:34
- [doit] OK 我再看看. 多谢了。 03/31 17:16
- [crazyman] 误点1:将输出的内存段放在程序段之前,会随着内容的输出,将程序段覆盖,导致程序不能正常运行 == 03/31 16:19
- [doit] 在做课程设计1时, 调试过程中发现,前面3行能正常显示,之后就出现乱码问题了。 在debug过程 03/31 15:40
- [doit] 感觉写的太长了。 唉. 03/31 15:36
- [游客] 题目给定的数据达到了要求,不过,还不能支持dx>10的数据。前面的子程序2应该有点启发,在改进一下, 03/27 20:23
- [游客] 不错。 后面的课程设计一用的到的子程序模块。 赶紧加油。 03/27 20:20
- [游客] 没问题。 03/27 20:18
[2009-04-01 15:21] 检测点 11.1
阅读全文 |
评论次数(2) |
浏览次数(712) |
所属类型(汇编作业)
[2009-03-31 15:35] 课程设计1
assume cs:code
code segment
start:
mov ax,data
mov es,ax
mov ax,table
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov cx,21
mov dh,5 ;输出的行
s0:
push cx
mov cl,2
;year
mov ax,es:[si]
mov [bx],ax
mov ax,es:[si+...
code segment
start:
mov ax,data
mov es,ax
mov ax,table
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov cx,21
mov dh,5 ;输出的行
s0:
push cx
mov cl,2
;year
mov ax,es:[si]
mov [bx],ax
mov ax,es:[si+...
阅读全文 |
评论次数(4) |
浏览次数(734) |
所属类型(汇编作业)
[2009-03-27 17:37] 实验10-3
;(3)
;名称:dtoc
;功能:将word型数据转变成十进制的字符串,字符串以0为结尾符
;参数:(ax)=word型数据
; ds:si指向字符串的首地址
;返回:无
;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,b...
;名称:dtoc
;功能:将word型数据转变成十进制的字符串,字符串以0为结尾符
;参数:(ax)=word型数据
; ds:si指向字符串的首地址
;返回:无
;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,b...
阅读全文 |
评论次数(1) |
浏览次数(729) |
所属类型(汇编作业)
[2009-03-27 17:37] 实验10-2
(2)
assume cs:code
code segment
start:
;计算1000000/10 (f4240H/aH)
mov ax,4240H
mov dx,000fH
mov cx,0aH
call divdw
mov ax,4c00h
int 21h
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型
;结果为dword型
;参数:(ax) = dword 型数据的低16位
; (dx) ...
assume cs:code
code segment
start:
;计算1000000/10 (f4240H/aH)
mov ax,4240H
mov dx,000fH
mov cx,0aH
call divdw
mov ax,4c00h
int 21h
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型
;结果为dword型
;参数:(ax) = dword 型数据的低16位
; (dx) ...
阅读全文 |
评论次数(1) |
浏览次数(676) |
所属类型(汇编作业)
[2009-03-27 17:36] 实验10-1
;(1)
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,8
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
;功能:在指定位置,用...
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,8
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
;功能:在指定位置,用...
阅读全文 |
评论次数(1) |
浏览次数(688) |
所属类型(汇编作业)
[2009-03-26 09:58] 检测点 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 start ...
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 start ...
阅读全文 |
评论次数(1) |
浏览次数(467) |
所属类型(汇编作业)
[2009-03-25 16:36] 检测点 10.4
内存地址 机器码 汇编指令
1000:0 b80600 mov ax,6
1000:2 ffd0 call ax
1000:5 40 inc ax
1000:6 mov bp,sp
add ax,[bp]
执行到call ax时,ip为5,执行完call ax后,(ip)=6,跳到mov bp,sp;[bp]默认的段地址在ss中,故该单元中的值即为call执行后压入栈中的值(ss:sp)...
1000:0 b80600 mov ax,6
1000:2 ffd0 call ax
1000:5 40 inc ax
1000:6 mov bp,sp
add ax,[bp]
执行到call ax时,ip为5,执行完call ax后,(ip)=6,跳到mov bp,sp;[bp]默认的段地址在ss中,故该单元中的值即为call执行后压入栈中的值(ss:sp)...
阅读全文 |
评论次数(1) |
浏览次数(478) |
所属类型(汇编作业)
[2009-03-25 16:25] 检测点 10.3
内存地址 机器码 汇编指令
1000:0 b80000 mov ax,0
1000:3 9a09000010 call far ptr s
1000:8 40 inc ax
1000:9 58 s:pop ax
add ax,ax
pop bx
add ax,bx
call far ptr 标号 指...
1000:0 b80000 mov ax,0
1000:3 9a09000010 call far ptr s
1000:8 40 inc ax
1000:9 58 s:pop ax
add ax,ax
pop bx
add ax,bx
call far ptr 标号 指...
阅读全文 |
评论次数(2) |
浏览次数(451) |
所属类型(汇编作业)
[2009-03-25 10:53] 检测点 10.2
内存地址 机器码 汇编指令
1000:0 b80000 mov ax,0
1000:3 e80100 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
我认为
call 标号 指令相当于是先将ip压入栈中,然后进行jmp near ptr 标号操作
所以先将(ax)=0压入栈中,跳到s处执行pop ax指令,最后ax的值为0
但是在debug中,结果不是这样,不知道是何解呢?...
1000:0 b80000 mov ax,0
1000:3 e80100 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
我认为
call 标号 指令相当于是先将ip压入栈中,然后进行jmp near ptr 标号操作
所以先将(ax)=0压入栈中,跳到s处执行pop ax指令,最后ax的值为0
但是在debug中,结果不是这样,不知道是何解呢?...
阅读全文 |
评论次数(3) |
浏览次数(448) |
所属类型(汇编作业)
[2009-03-25 10:07] 检测点 10.1
; 补全程序,实现从内存1000:0000处开始执行指令
; retf 实现的是远转移。同时修改ip和cs
; 取栈中第一个字赋给ip 然后再去第二字赋给cs
; 故要求从内存1000:0000处开始执行指令即cs:ip指向1000:0 (cs) = 10000 (ip) = 0
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,...
; retf 实现的是远转移。同时修改ip和cs
; 取栈中第一个字赋给ip 然后再去第二字赋给cs
; 故要求从内存1000:0000处开始执行指令即cs:ip指向1000:0 (cs) = 10000 (ip) = 0
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,...
阅读全文 |
评论次数(1) |
浏览次数(465) |
所属类型(汇编作业)
『 查看更多文章 』